Hallo,
bei z.B. mehreren CheckboxGadgets kann der Anwender die doch per Tabulatur ansteuern und per Leertaste auswählen. Das gleiche bekomme ich mit OptionGadgets (z.B. das Beispiel aus der Hilfe) nicht hin.
Gibt es da einen Trick ?
OptionGadget per Tastatur
> was meinst du genau mit OptionGadgets ?
na, halt OptionGadgets eben
In anderen Sprachen heißen die u.a. RadioButtons.
> Combobox kann man z.B. mit Cursor (rauf und runter) zwischen den
> Werten wechseln.
Grüße ... Kiffi
na, halt OptionGadgets eben

In anderen Sprachen heißen die u.a. RadioButtons.
> Combobox kann man z.B. mit Cursor (rauf und runter) zwischen den
> Werten wechseln.
Code: Alles auswählen
ComboBoxGadgets != OptionGadgets
a²+b²=mc²
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Soweit ich weiss ist dieses Problem mit dem jetzigen Stand von PB unlösbar.Ich habe es für den Moment mit AddKeyboardShurtcut gelöst.
So reagiere ich auf die Up- bzw Down-Taste und wechsle entsprechend das aktive Gadget wenn es eines der betroffenen OptionGadgets ist.
Irgendwie habe ich aber das Gefühl, das ist nicht der optimale Weg.
Ein kleiner Exkurs:
Die Funktionalität auf du hier anspielst nennt sich "Dialog Box Keyboard Interface" welches es einem erlaubt die Controls und das Fenster selber mittels der Tastatur zu kontrollieren. Wie man es von "handelsüblichen" Windows-basierten Anwedungen kennt.
Eine komplette Liste aller verwendeten Tasten, Tastenkombination sowie ausführliche Details findest du hier:
http://msdn2.microsoft.com/en-us/librar ... oard_iface
Wie der Name schon sagt ist dieses Verhalten eigentlich nur Dialogen vorbehalten aber mit dem Befehl IsDialogMessage_() ist es möglich dieses auch für reguläre Fenster zu aktivieren. Allerdings hat das einen kleinen Nachteil weil das normale Eingabeverhalten ein wenig beeinträchtigt wird (wie genau steht auf MSDN).
Der eigentliche Knackpunkt ist folgender:
Der Befehl IsDialogMessage_() verlangt einen Pointer zu einer MSG Structure welche alle Nachrichten-spezifischen Informationen eines Threads enthält. Also genau wie die Nachrichten die man mittels eines Callbacks abfängt. Mit reiner WinAPI würde das so ausehen:
Code: Alles auswählen
lpMsg.MSG
While GetMessage_(lpMsg,0,0,0)
If IsDialogMessage_(result,lpMsg) = 0
TranslateMessage_(lpMsg)
DispatchMessage_(lpMsg)
EndIf
Wend
Code: Alles auswählen
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow