SpeedButton mit Tastatur erreichen
-
Hallo,
ich brauche eine Auswahl um verschiedene Optionen auszuwählen für eine Ansteuerung (Ventile). Dies habe ich mit SpeedButtons realisiert. Geht eigentlich wunderbar (gedrückt / nicht gedrückt). Leider lassen sich die SpeedButtons nicht mit der Tastatur erreichen bzw. auswählen. Nortmale Buttons lassen jedoch den Zustand gedrückt/nicht gedrückt nicht zu. Gibt es eine Lösung? Kann ich den SPeed Button dazu bringen auf Tastatur zu reagieren?Danke für die Hilfe....
Jörn
-
Hallo
Es gibt zwei Möglichkeiten :
Erstelle eine TActionList auf deinem Form, und darin eine Action mit der gewünschten Tastenkombination. Dann wählst du bei dem SpeedButton in der Eigenschaft Action deine erstellte Action aus.
Nachteil : Die auszuführende Methode muß vom OnClick des Buttons in den OnExecute-Event der Action verlegt werden.Zweite Möglichkeit :
Du fängst mit den Events TForm::OnKey... die Tasten ab und reagierst auf deine Kombination.bis bald
akari
-
Das ist recht simpel: Du kannst die Caption des Speedbuttons ja mit "&Text" versehen, so daß das OnClick-Ereignis aufgerufen wird. Um den Buttonstatus zu toggeln kannst du Die Eigenschaft "Down" benutzen.
Jetzt mußt du nur dafür sorgen, daß der Aufruf des OnClick-Ereignisses per Maus nicht auch die Eigenschaft "Down" verändert. Setz deshalb ein Flag im OnMausDown-Ereignis, welches dieses verhindert und im Onclick-Ereignis wieder zurückgesetzt wird.SpeedButton1Click() { if (Maus) Maus = false; else SpeedButton1->Down = !SpeedButton1->Down; } SpeedButonMausDown() { Maus = true; }Bye - Peter
-
Danke Peter, das wars. HAtte den Ansatz auch ausprobiert, jedoch als "nicht funktionierend" abgehakt, weil der Knopf nicht unten blieb und somit gar nicht gemerkt, das das Event ausgelöst wurde.
Weitere Frage: Kann ein SpeedButton auch den Focus erhalten? Wohl nicht, oder? Gibt es ein Element das unten bleibt und den Focus erhalten kann?