FMX.Forms.TCommonCustomForm.KeyDown
Delphi
procedure KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState); virtual;
C++
virtual void __fastcall KeyDown(System::Word &Key, System::WideChar &KeyChar, System::Classes::TShiftState Shift);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | FMX.Forms.pas FMX.Forms.hpp |
FMX.Forms | TCommonCustomForm |
説明
このフォームに入力フォーカスがある際に、キーが押されると実行されます。
FireMonkey フレームワーク KeyDown は、フォームでキーの押下を処理する主要メソッドです。KeyDown は、このフォームに入力がフォーカスがあるときに、キーが押されるたびに実行されます。KeyDown は内部的に使用されます。用途は、メニューやアクションを有効化する、このフォームの子コントロールを循環する TAB リクエストを処理するためなどです。エディタは、KeyDown を使用して、編集されているテキストにシンボルを追加することができます。
KeyDown をサブクラスでオーバーライドすることにより、さらなるキー処理を提供することができます。
KeyDown には、次のパラメータがあります:
パラメータ | 説明 |
---|---|
|
押されたキーボード キーのスキャン コード、または、 UITypes ユニットは、キーボード キーのスキャン コードのためのシンボリック定数を提供する、Virtual Keys を定義します。 同じキーの物理スキャン コードは、異なるプラットフォーム(Windows や iOS)下では異なる可能性があります。FireMonkey フレームワーク プラットフォーム固有ユニット(FMX.Platform.Mac.pas ユニット)では、ネイティブの Mac スキャン コードを、UITypes ユニットで定義されている対応する Windows のコードに変換しなければなりません。その結果、
数字および文字のキー -- 入力言語やアルファベット キーの大文字小文字には依存しない -- は、'
|
|
押された文字(数字)、または、 押されたキーの組み合わせを印字可能な文字または数字として扱える場合は、 |
|
キーが押下された際の、Ctrl、Alt、Shift、および CMD(Mac のみ)のキーの状態を決定します。 |
KeyDown は次のアルゴリズムに従って押されたキーを処理します。
- KeyDown はまず IsDialogKey を、KeyDown で指定されたのと同じパラメータで呼び出します。
IsDialog
パラメータは、KeyChar < ' '
やShift
が CTRL、ALT、または CMD キーのいずれかである場合に、True
を返します。つまり、KeyChar
とShift
の組み合わせが、何らかのコントロールの組み合わせであるか(印刷可能文字でないか)を示しているか、です。そうでなければ、False
を返します。' '
文字は、$20
ASCII 値を持っています。$20
より小さい ASCII 値は、コントロールの組み合わせを示します。 - IsDialogKey が
True
をIsDialog
パラメータで返した場合、押されたキーの組み合わせが処理されるまで、次の順番で、フォーム内のすべての子コントロール、メニュー、アクション リスト渡されます: Key = vkTab
の場合、KeyDown はフォーカスを、コントロールの「タブ順」の次のコントロールに移し、終了します。Key <> 0
またはKeyChar <> #0
の場合、KeyDown は、フォーカスのあるコントロールの KeyDown メソッドを呼び出し、それから、OnKeyDown イベント ハンドラのいずれかが割り当てられている場合には、それを呼び出します。- finally ブロックで、KeyDown は現在の日時を、現在の アプリケーションの LastKeyPress と LastUserActive プロパティに格納します。