TButtonの矢印キーイベントを捕まえる
例えば、タブキーの他に矢印キーでも、アクティブコントロールを変更したいとして、グループボックスにあるボタンにフォーカスがあると、矢印キーを押すと同じグループボックス内の次のコントロールにフォーカスが移動してしまう。
TMessageEventをApplication->OnMessageに設定してやる。
typedef void __fastcall (__closure *TMessageEvent) (tagMSG& Msg, bool &handled);
void __fastcall TForm1::AppMessage (tagMSG& Msg, bool& handled)
{
ここでWM_KEYDOWNのメッセージを処理する。
メッセージをそのままにするならhandledはfalseに、再投入しないならtrueにする。
}
コンストラクタでクロージャを設定する。
__fasrcall TForm1::TForm1(TComponent* Owner)
{
Application->OnMessage = AppMessage;
}
これで!捕捉できる。
普通にKeyPreviewをtrueにして、OnKeyDownを書いてもうまく行かない。
| 固定リンク
「CBuilder」カテゴリの記事
- 一定時間アイドル状態が続いたら何かをしたい(2015.11.26)
- TMetafileへの描画が反映されない(2015.07.30)
- TDataModuleはClientHeightプロパティを持っていない(2015.02.19)
- VCLのTStringsを検索キーワードのトークナイザー的に使ってみる(2014.12.18)
- Delphi/C++Builder TControl::ClientToScreenでVCLコントロール上の座標をスクリーン座標に変換する(2014.12.02)
この記事へのコメントは終了しました。
コメント