Bei NIL mußt du immer etwas aufpassen,
wenn das Programm keinen Fokus mehr hat und noch andere Programme offen sind, dann bekommen sie den Fokus und dein Programm wird in den Hintergrund verschoben.
{Self.}SetFocus;
, also auf die Form setzen
oder SetFocus, bzw. ActiveControl auf irgendeine andere Komponente.
Alternativ
{Self.}FindNextControl(...).SetFocus;
oder
{Self.}SelectNext(...);
und ein anderes Control für den Fokus suchen lassen.
Enter/Return allerdings nicht,
Oder Leertaste.
Und bei .Default oder .Cancel auch global auf Enter oder Escape.
Stimmt, ToolButtons haben keine Caption und somit auch keine Shortcuts.
Bei DevExpress haben cxButtons ein SpeedButtonOptions.CanBeFocussed, wo man per Property zwischen dem Verhalten eines "normalen" Button und SpeedButton wechseln kann.
Und schön ist auch, dass alles unterschiedlich reagiert.
* Manches auf's Drücken der Taste
* Anderes auf's Loslassen
z.B. Maus oft (nicht immer) auf Loslassen und Tastatur auf Runterdrücken.
Ich hatte mal den "Gäg", dass beim Drücken von F2 ein Aufwahlfenster mit Vorgabewerten schnell geschlossen werden konnte ... beim Drücken der Taste
und im übergeordneten Fenster wurde F2 beim Loslassen benutzt, um das Aufwahlfenster zu öffnen.
F2 = Aufwahl auf -> nochmal F2 = Aufwahl zu, aber sofort gleich nochmal auf