Delphi Win32 (VCL) では、次を使用します。
Application.OnMessage := MyAppMessage;
FireMonkey で同等のものは何ですか?
アプリケーション (すべてのアクティブなフォーム コントロール) のすべてのキーボードおよびマウス イベントをキャッチし、それらを処理する必要があるルーチンがあります。
Delphi Win32 (VCL) では、次を使用します。
Application.OnMessage := MyAppMessage;
FireMonkey で同等のものは何ですか?
アプリケーション (すべてのアクティブなフォーム コントロール) のすべてのキーボードおよびマウス イベントをキャッチし、それらを処理する必要があるルーチンがあります。
FireMonkeyはクロスプラットフォームであり、Windows、Mac OSX、iOS、そして間違いなく他の多くのプラットフォームで動作します。したがって、FireMonkeyによって公開されるWindowsメッセージはありません。
VCLで行うことに慣れているものは何でもOnMessage
、FireMonkeyで同等のものを持っている可能性があります。OnMessage
その同等物が正確に何であるかは、ハンドラーが達成しようとしていることに大きく依存します。
FireMonkey で、プラットフォームに依存しない方法でアプリケーション レベルでマウスとキーボードのイベントをキャプチャする方法を知りません。Delphi XE 2 Update 2 の時点では、まだ実装されていないと思います。
ただし、デフォルトでは、FireMonkey フォームは、コントロールよりも先にすべての MouseDown イベントと KeyDown イベントを取得します。
フォームの MouseDown イベントと KeyDown イベントをオーバーライドするだけで、同じことが実現します。
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
procedure KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState); override;
end;
{ TForm1 }
procedure TForm1.KeyDown(var Key: Word; var KeyChar: System.WideChar;
Shift: TShiftState);
begin
// Do what you need to do here
ShowMessage('Key Down');
// Let it pass on to the form and control
inherited;
end;
procedure TForm1.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Single);
begin
// Do what you need to do here
ShowMessage('Mouse Down');
// Let it pass on to the form and control
inherited;
end;
必要に応じて、MouseMove、MouseUp、MouseWheel、MouseLeave、KeyUp、DragEnter、DragOver、DragDrop、および DragLeave を使用して続行できます。
これらの回答は、公開されたイベントには問題ありませんが、他のあいまいなシステムイベントには、より注意が必要です。これを書いている時点では、このリンクは回答されていません。
キャプチャ-usb-plug-unplug-events-in-firemonkey
しかし、それは一般的な問題を解決するのに役立ちます。
私はこれを回答ではなくコメントとして投稿したでしょうが、以前の回答はそれ以上のコメントを受け付けていませんでした。