Vcl.Controls.TWinControl.OnKeyPress
Delphi
property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress;
C++
__property TKeyPressEvent OnKeyPress = {read=FOnKeyPress, write=FOnKeyPress};
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
event | protected | Vcl.Controls.pas Vcl.Controls.hpp |
Vcl.Controls | TWinControl |
説明
キーが押されたときに発生します。
OnKeyPress イベント ハンドラを使用すると、1 文字のキーを押したときの結果として何かを発生させます。
OnKeyPress イベント ハンドラの Key パラメータはChar 型で、OnKeyPress イベントは押されたキーの ASCII 文字を登録します。ASCII Char 値(たとえば SHIFT キーや F1キー)に対応しないキーは、OnKeyPress イベントを生成しません。キーの組み合わせ(たとえば SHIFT+A など) では、OnKeyPress イベントを 1 つだけ生成します。(たとえば、SHIFT+A と押したときの結果は、Caps Lock がオフのときの Key の値が「A」になります。)ASCII 以外のキー、またはキーの組み合わせに応答するには、OnKeyDown もしくは OnKeyUp イベント ハンドラを使用します。
アプリケーションは、すべてのキーについて、ユーザーがキーを押すと 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 イベントを使用する必要があります。