Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventType()
Case #PB_EventType_Focus
Select GetActiveGadget()
Case #ListIcon_1
AddKeyboardShortcut(0, #PB_Shortcut_Back, 101)
Debug "#ListIcon_1"
Case #ListIcon_2
AddKeyboardShortcut(0, #PB_Shortcut_Back, 101)
Debug "#ListIcon_2"
Case #String_1
RemoveKeyboardShortcut(0, #PB_Shortcut_Back)
Debug "#String_1"
Case #String_2
RemoveKeyboardShortcut(0, #PB_Shortcut_Back)
Debug "#String_2"
Case #String_3
RemoveKeyboardShortcut(0, #PB_Shortcut_Back)
Debug "#String_3"
Case #String_4
RemoveKeyboardShortcut(0, #PB_Shortcut_Back)
Debug "#String_4"
EndSelect
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case 100 ; Tab
Select GetActiveGadget()
Case #ListIcon_1
SetActiveGadget(#ListIcon_2)
Case #ListIcon_2
SetActiveGadget(#ListIcon_1)
Case #String_1
SetActiveGadget(#String_2)
Case #String_2
SetActiveGadget(#String_3)
Case #String_3
SetActiveGadget(#String_4)
Case #String_4
SetActiveGadget(#String_1)
EndSelect
Case 101 ; Backspace
Select GetActiveGadget()
Case #ListIcon_1
MessageRequester("","Backspace: spez.Funktion ListIcon1")
SetActiveGadget(#ListIcon_1)
Case #ListIcon_2
MessageRequester("","Backspace: spez.Funktion ListIcon2")
SetActiveGadget(#ListIcon_2)
EndSelect
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Ich verstehe Deinen Code nicht, bin auch kein Freund von
windowsuntpyischen (dostypischen) Tastaturhandling. aber im Eventloop
sollte es in etwa so aussehen:
Repeat
Event = WaitWindowEvent()
Gadget = EventGadget()
Type = EventType()
Select Event
Case #PB_Event_Gadget
If Type = #PB_EventType_Focus
AddKeyboardShortcut(Gadget, #PB_Shortcut_Back, 101)
ElseIf Type = #PB_EventType_LostFocus
RemoveKeyboardShortcut(Gadget, #PB_Shortcut_Back)
EndIf
Mußte Dir jetzt selber zusammenstricken, ich weiß nicht was es werden
soll.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Sieht mir genauso aus, nur ein bisschen anders formuliert.
Jeder hat seine eigene Denkweise (nicht nur beim Programmieren), so dass der Programmtext halt etwas unterschiedlich aussieht.
Man könnte bemängeln, dass ich AddKeyboardShortcut mehrfach für dieselbe Taste aufrufe, dass sollte aber eigentlich egal sein, gehe ich mal von aus.
Sieht nicht mal ähnlich:
Select GetActiveGadget() ist nämlich doppelgemoppelt, das ActiveGadget
ist das mit dem Focus
Gute Nacht
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Mit GetActiveGadget ermittelste das Gadget, welches den Focus hat.
Wenn für ein Gadget der EventType #PB_EventType_Focus hat es den Focus.
Eine Abfrage wer den Focus hat genügt
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nachdem ich jetzt festgestellt habe, dass #PB_EventType_Focus bei ListIcons nicht ausgelöst wird (warum nicht?) und es keine anderen Events bei #PB_Event_Gadget gibt, ohne dass das auslösende Gadget nicht auch den Fokus hat, stimme ich Dir zu.