Ich habe vor einiger Zeit sehr lange nach einer Lösung für das Problem gesucht, wie ich auf die F12-Taste reagieren kann ohne daß dabei der Debugger von Delphi anspringt. Das halbe Internet habe ich abgegrast, von Eingriffen in die Registry über Zusatzkomponenten bis hin zu Binärhacks der delphi32.exe habe ich allen möglichen Blödsinn gefunden.
Jetzt bin ich durch Zufall auf eine ganz einfache Lösung gekommen: Einfach die Eigenschaft Form.KeyPreview auf TRUE setzen und dem Ereignis Form.OnKeyPress einen Handler zuweisen. Fertig. Der Handler kann durchaus einfach leer sein, Hauptsache es ist einer zugewiesen.
Jetzt reagieren auch Actions, deren Shortcut man auf F12 gesetzt hat ganz normal. Genausogut könnte man aber auch innerhalb von OnKeyPress auf die F12-Taste reagieren:
Code:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
case Ord(Key) of
VK_F12: MachWas();
end;
end;