Tastatur-Navigation durch eine OptionGadget-Gruppe
Verfasst: 26.06.2021 11:59
Hallo Leute und guten Tag.
Wenn ich eine OptionGadget-Gruppe in einem Fenster erstelle, kann ich zwar mit der Tabulatortaste dorthin navigieren, was ich am gepunkteten Fokus-Rechteck erkenne, aber nicht mit den Pfeiltasten zwischen den einzelnen Optionen wählen, wie in den meisten Windows-Anwendungen üblich. Hier ein Beispielcode zum Testen:
Ist das ein Bug in PureBasic, getestet in den Versionen 3.94, 4.10, 5.46 und 5.72, oder so gewollt? In den Einstellungen des PureBasic-Editors kann ich nämlich auch nicht mit den Pfeiltasten zwischen den einzelnen OptionGadgets wählen. Wie kann ich diese Funktionalität einbauen? Mit
bekomme ich zwar OptionGadget-Gruppen in hässlicher Fettschrift erstellt, aber welche Ereignisse (#WM_XXX) ich dafür abfragen muss, ist mir vollkommen unklar, weil ich mit denen von Windows noch nie ernsthaft direkt gearbeitet habe.
Ich nutze PureBasic 5.72 unter Windows XP SP3.
Gruß, piccolo
Wenn ich eine OptionGadget-Gruppe in einem Fenster erstelle, kann ich zwar mit der Tabulatortaste dorthin navigieren, was ich am gepunkteten Fokus-Rechteck erkenne, aber nicht mit den Pfeiltasten zwischen den einzelnen Optionen wählen, wie in den meisten Windows-Anwendungen üblich. Hier ein Beispielcode zum Testen:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 140, 160, "Optionen",
#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
ContainerGadget(0, 20, 20, 100, 120, #PB_Container_Flat)
OptionGadget(1, 20, 20, 60, 20, "Option 1")
OptionGadget(2, 20, 50, 60, 20, "Option 2")
OptionGadget(3, 20, 80, 60, 20, "Option 3")
CloseGadgetList()
SetGadgetState(2, 1) ; Zweite Option aktivieren
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Debug "Auswahl"
EndSelect
ForEver
EndIfCode: Alles auswählen
CreateWindowEx_(#WS_EX_WINDOWEDGE, "BUTTON", "Option 4",
#BS_RADIOBUTTON | #WS_CHILD | #WS_GROUP |
#WS_TABSTOP | #WS_VISIBLE,
40, 130, 60, 20, WindowID(0), #Null,
GetModuleHandle_(#Null), #Null)
CreateWindowEx_(#WS_EX_WINDOWEDGE, "BUTTON", "Option 5",
#BS_RADIOBUTTON | #WS_CHILD | #WS_VISIBLE,
40, 160, 60, 20, WindowID(0), #Null,
GetModuleHandle_(#Null), #Null)Ich nutze PureBasic 5.72 unter Windows XP SP3.
Gruß, piccolo