質問

私の仕事のためにDelphiを購入しなければならなかったときに見た大きなセールスポイントの1つは、タブレットPCをサポートする能力でした。現在、私が働いている会社のクライアントは、タブレットPCを使用したいと考えています。私はタブレットPCを使用してDelphiの例を見つけるように懸命に努力してきましたが、何も見つかりません。誰かがそれを経験していますか?何かチュートリアルや例はありますか?

コンポーネントがフォーカスを獲得し、それを失ったときにそれを隠すときに仮想キーボードを持参することさえできないようです。

役に立ちましたか?

解決

Delphi 2010は、Delphiに素敵なタッチとジェスチャーのサポートを紹介しました。

それについての詳細を取得するには、に進んでください edn ウェブサイトとCoderage 4リプレイを探してください。題されたセッションがあります」VCLの実践的なジェスチャー「セッピー・ブルームによって。Coderage5にも題されたセッションがあります」新しいアプリケーションと現在のプロジェクトの能力を身振りで示す「Vesvolod Leonovによる。

マルコ・カントゥの第6章Delphi 2010ハンドブック「デルファイのタッチとジェスチャーもカバーしています。

最終的には、確認できます クリス・ベンセンのウェブログ Delphiでのタッチとジェスチャーのサポートに関するいくつかの紹介投稿とデモソースコードについて。

コンポーネントがフォーカスを獲得し、それを失ったときにそれを隠すときに仮想キーボードを持参することさえできないようです。

Delphi 2010および新しいバージョンでは、タッチ対応です キーボードコンポーネント すでに利用可能です。それを見えるようにするために、またはフォーカスが変更されたときにそれを非表示にするために、あなたは処理できます CM_FOCUSCHANGED VCLメッセージ、および焦点を獲得するコントロールが特定のクラスから派生したり、特別な条件を満たしているときにキーボードを表示します。これがサンプルコードです:

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    TouchKeyboard1: TTouchKeyboard;
  private
    procedure ActivateVirtualKeyboard(Control: TWinControl; Keyboard: TTouchKeyboard);
    procedure CmFocusChanged(var Msg: TCMFocusChanged); message CM_FOCUSCHANGED;
  public
    { Public declarations }
  end;

/// Implementation

procedure TForm1.ActivateVirtualKeyboard(Control: TWinControl; Keyboard: TTouchKeyboard);
var
  APoint : TPoint;
begin
  if Control is TCustomEdit then
  begin
    APoint := Control.ClientToScreen(Point(0,0));
    APoint := Keyboard.Parent.ScreenToClient(APoint);
    Keyboard.Left := APoint.X;
    Keyboard.Top := APoint.Y + (Control.Height);
    Keyboard.Visible := True;
  end
  else
    Keyboard.Visible := False;
end;

procedure TForm1.CmFocusChanged(var Msg: TCMFocusChanged);
begin
  ActivateVirtualKeyboard(Msg.Sender, TouchKeyboard1);
end;

上記のコードは、焦点が変更されるたびにActivateVirtualKeyboardを呼び出します。 MSG.Senderは、フォーカスを獲得したコントロールです。 ActivateVirtualKeyBoardコントロールがtCustomeditの子孫であるかどうかを確認します(TEDITやTMEMOなどのコンポーネントがこのクラスから下降します)。コントロールがtcustomeditから派生している場合、仮想キーボードをコントロールのすぐ下に配置し、キーボードを表示します。それ以外の場合は、キーボードを隠します。

サンプルコードには、編集、メモ、フォーム1のボタンがあります。キーボードは、edit1とmemo1に表示され、Button1がフォーカスになったときに隠してください。

画面上のキーボードの位置の計算はそれほど賢くはなく、フォームのボトムエッジに焦点が非常に近い場合、キーボードが下がる可能性があります。とにかく、画面にコントロールを配置することはあなたの質問の範囲外です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top