Delphi 2010タブレットPCサポート
-
29-09-2019 - |
質問
私の仕事のために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がフォーカスになったときに隠してください。
画面上のキーボードの位置の計算はそれほど賢くはなく、フォームのボトムエッジに焦点が非常に近い場合、キーボードが下がる可能性があります。とにかく、画面にコントロールを配置することはあなたの質問の範囲外です。