Vcl.Controls.TWinControl.OnKeyDown

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

Delphi

property OnKeyDown: TKeyEvent read FOnKeyDown write FOnKeyDown;

C++

__property TKeyEvent OnKeyDown = {read=FOnKeyDown, write=FOnKeyDown};

プロパティ

種類 可視性 ソース ユニット
event protected
Vcl.Controls.pas
Vcl.Controls.hpp
Vcl.Controls TWinControl


説明

コントロールにフォーカスがあるときにユーザーがキーを押すと発生します。

OnKeyDown イベント ハンドラを使用すると、キーが押された際に発生する、特殊な処理を指定することができます。 OnKeyDown ハンドラは、キーボード キー(ファンクション キーや、SHIFTALTCTRL キーと通常のキーとの組み合わせ、も含まれる)のほか、マウス ボタンの押下にも応答します。

メモ: TCheckBox は、矢印キーについては、OnKeyDown イベントを発生させません。

OnKeyDown は、Vcl.Controls.TKeyEvent 型のイベント ハンドラです。 パラメータの説明については、TKeyEvent を参照してください。

アプリケーションは、すべてのキーについて、ユーザーがキーを押すと Windows の WM_KEYDOWN メッセージを受け取ります。 このメッセージは、間接的に OnKeyDown イベントを生成します。 Key パラメータを #0 に設定すると、メッセージはそれ以上処理されなくなります。 ただし、文字を生成するキーでは、Windows は WM_CHAR も生成します。 OnKeyDown イベントが発生した時点で、そのキーの WM_CHAR メッセージは既にメッセージ キューに置かれています。 Key を #0 に設定しても、メッセージの配信を止めることはできないため、OnKeyPress イベントが発生します。 つまり、Key を #0 に設定しても、文字を持っていないキーに対してのみ、OnKeyPress イベントの発生が回避されます。 文字を表すキーについては、引き続き OnKeyPress が発生します。

このようなキーの処理方法には利点があります。 文字(改行復帰の #13、Ctrl+C の #3 などの制御文字を含む)だけを処理するコードは、OnKeyPress イベントを使用する必要があります。 文字を生成しないキーを処理するコードは、OnKeyDown イベントを使用する必要があります。

関連項目

コード サンプル