Passen wir es nochmal an (dann können wir auf die implizit gemachte Annahme über den Wert von Handled verzichten):
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean);
const
STEP = 16;
var
Button: TButton;
begin
Handled := False;
if (Screen.ActiveForm = self) and // Ist das gewünschte Fenster aktiv?
(ActiveControl is TButton) then
begin
Button := TButton(ActiveControl);
Handled := true;
case Msg.CharCode of
VK_LEFT : Button.Left := Button.Left - STEP;
VK_UP : Button.Top := Button.Top - STEP;
VK_RIGHT : Button.Left := Button.Left + STEP;
VK_DOWN : Button.Top := Button.Top + STEP;
else
Handled := False;
end;
end;
end;