Я не знаю способа в 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.
Обработка сообщений Windows не будет перекрестной платформой. Что вы пытаетесь достичь? –
Я отредактировал ваш вопрос, чтобы включить то, что вы пытаетесь сделать, скопировав свой комментарий ниже и дал ответ. –