XE4 FireMonkeyでMac版のプログラムを作っています。
キーボードのShiftキーを押したときにある処理をしたいと思ってFormKeyDownイベントに、
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
if Key = vkShift then
xxxxxxxx;
end;
と記述しました。
Windowsで実行すると問題ないのですが、Macで実行するとKeyDownのイベントが発生しなくて困っています。
Shift+'A'のように何かのキーと同時に押せばイベントは発生しますが、Shiftキー単独ではイベントは発生しません。
キーの状態を調べるGetKeyStateを使おうかと思ったのですが、これはWindowsでしか使えないようです。
何か解決策はあるでしょうか?
よろしくお願いします。
GetKeyState 相当のものは Stack Overflow にありました。
[How to get current modifier states with FireMonkey on OSX?]
http://stackoverflow.com/questions/12876911/how-to-get-current-modifier-states-with-firemonkey-on-osx
TNSEvent.OCClass.modifierFlagsを使ったらうまくいきました。
ありがとうございました。
ツイート | ![]() |