フォームにラベルを1枚だけ貼り付け、フォームのKeyPreviewをtrueに設定
した状態で、フォームのOnKeyDownイベントに
if Key=VK_F10 then Label1.Caption:=TimeToStr(Now)
としたのですが、F10キーを押しても正確に2回に1回しか反応しません。
F1からF9とF11、F12キーは大丈夫ですし、F10を押した後、他のTABキーなどを
押してからF10を押すと反応します。どうもF10を2回続けて押せないよう
なのですが、何かヒントないでしょうか。デバッガから起動しても、EXEを
直接走らせても同じです。
F10はAltキーと同じで、メニューをアクティブにするキーとして予約されています。
見た目わかりにくいですが、一回押した時点でメニューモードになっており
Spaceを押せばシステムメニューが表示されるはずです。もう一回押すと解除されます。
簡単な対策は「システムメニューを外す」ですが、おそらくそれでは困ると思うので……
ActionListを貼り付けて、適当なアクションを追加してShortCutをF10にしてやるのはどうでしょう。
そっち系のキー取得ならWM_SYSKEYDOWNです。
http://www.geocities.jp/ky_webid/win32c/025.html
torさん、monaaさん、ありがとうございます。メニューショートカットは気が付きませんでした。たまたまメニューがないアプリだったもので。
原因が分かれば対策は何とかなると思いますが、torさんのアイデアのActionListのActionExecuteで呼ぶのが簡単ですね。
ツイート | ![]() |