FMX.Controls.TControl.KeyDown

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

procedure KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); virtual;

C++

virtual void __fastcall KeyDown(System::Word &Key, System::WideChar &KeyChar, System::Classes::TShiftState Shift);

プロパティ

種類 可視性 ソース ユニット
procedure
function
protected
FMX.Controls.pas
FMX.Controls.hpp
FMX.Controls TControl


説明

コントロールにキーボード フォーカスがある状態でキーが押されたときの応答を提供します。

押されたキーがアプリケーション キー(Key = vkApps)の場合、KeyDown はコントロールのコンテキスト メニューを表示します。それ以外の場合は、OnKeyDown イベント ハンドラが割り当てられていれば、KeyDown はそれを呼び出します。

TCommonCustomForm クラスや TControl の下位クラス(TCustomGrid など)では、キーの押下を処理するメソッドから KeyDown を呼び出します。これらは、メッセージ パラメータをキー コード、文字コード、シフト状態にデコードします。これらをそれぞれ KeyKeyCharShift の各パラメータに渡して KeyDown メソッドを呼び出します。

パラメータ 説明

Key

押されたキーボード キーのスキャン コードか $0 です。 押されたキーの組み合わせがショートカットと考えられる場合、Key <> 0仮想キーKeyChar = #0 です。 同じキーの物理的なスキャン コードが、異なるプラットフォーム(Windows または iOS)では異なる可能性があります。 プラットフォーム固有のユニット(たとえば FMX.Platform.Mac.pas など)では、ネイティブ スキャン コードを、対応する Windows コード(UITypes ユニットで定義)に変換しなければなりません。以下に例を示します。

vkReturn = $0D; { 13 } はキーボード キー Return に対応します。
vkF2 = $71; { 113 } はキーボード キー F2 に対応します。

KeyChar

押された文字(数字)または #0 です。 押されたキーの組み合わせを印字可能な文字または数字として扱える場合は、Key = 0 で、KeyChar には、現在のキーボードの入力言語、キーボード モード(Caps Lock キーおよび Num Lock キー)、キーボードのシフト状態、IME の状態に従って、押されたシンボルが格納されます。エディタでは、このシンボルを使用して、編集中のテキストに追加することができます。

Shift

コントロールにフォーカスがある状態で指定のキーが押されたときにどのシフト キー(Shift、Ctrl、Alt、command)が押されたかを示します(command キーは Mac の場合のみ)。

押されたキーの組み合わせがコントロールで正常に処理され、それ以上の処理が必要ない場合、KeyDown は、Key = 0 および KeyChar = #0 を割り当てます。

protected メソッドである KeyDown をオーバーライドすると、コントロールにキーボード入力フォーカスがある状態でキーが押されたときの別の応答を提供することができます。

パラメータの詳細については、TCommonCustomForm.KeyDown を参照してください。

警告: 仮想(画面上の)キーボードを Android デバイスで使用している際、押されたキー(特にテキスト文字)の検知に KeyEvents に依存してはいけません。 ただし、対象となるアプリケーションによっては、KeyEventsreturnenter といったキーは検知しますが、delete は検知しません。 他のソフトウェア入力メソッドでは、バージョンに関係なく KeyEvents が送信されない場合がある点に注意してください。

関連項目