Seite 1 von 3
Option mit der Tastatur auswählen
Verfasst: 13.11.2007 18:52
von Little John
Hallo zusammen,
wie kann man am einfachsten folgendes Beispiel ergänzen, damit die Optionen
mit der Tastatur (z.B. Pfeil hoch und runter) ausgewählt werden können?
Code: Alles auswählen
If OpenWindow(0, 0, 0, 140, 110, "OptionGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
OptionGadget(0, 30, 20, 60, 20, "Option 1")
OptionGadget(1, 30, 45, 60, 20, "Option 2")
OptionGadget(2, 30, 70, 60, 20, "Option 3")
SetGadgetState(1, #True)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
EndIf
TIA, Little John
Verfasst: 13.11.2007 18:56
von Thomas
Entweder mit
oder
Ich tipp mal schnell nen Code ...
Verfasst: 13.11.2007 19:03
von Thomas
Schon fertig:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 140, 110, "OptionGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
OptionGadget(0, 30, 20, 60, 20, "Option 1")
OptionGadget(1, 30, 45, 60, 20, "Option 2")
OptionGadget(2, 30, 70, 60, 20, "Option 3")
SetGadgetState(1, #True)
EndIf
AddKeyboardShortcut(0, #PB_Shortcut_Up, 1)
AddKeyboardShortcut(0, #PB_Shortcut_Down, 2)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Menu
Select EventMenu()
Case 1
If GetGadgetState(0) <> 0
SetGadgetState(2, 1)
ElseIf GetGadgetState(1) <> 0
SetGadgetState(0, 1)
ElseIf GetGadgetState(2) <> 0
SetGadgetState(1, 1)
EndIf
Case 2
If GetGadgetState(0) <> 0
SetGadgetState(1, 1)
ElseIf GetGadgetState(1) <> 0
SetGadgetState(2, 1)
ElseIf GetGadgetState(2) <> 0
SetGadgetState(0, 1)
EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
Verfasst: 13.11.2007 19:22
von AND51
@ Little John:
Schon mal aufgefallen, dass du generell in allen Fenster mit TAB von einem Gadget zum nächsten springen kannst? In deinen selbsterstellen Anwendungen geht das auch, ohne, dass du zusätzlichen Code brauchst.
Jedes Gadget, an dem du vorbeikommst, wenn du TAb drückst kannst du verändern:
- Auslösen mit Eingabe/Leertaste (z. B. Buttons)
- verändern mit Pfeil Rauf/Runter (z. B. ComboBoxGadget)
- Pfeil Links/Rechts (z. B. TrackBarGadget)
- Bild Auf/Ab (kann Pfeiltasten ersetzen, springt etwas weiter)
- Scrollrad der Maus (z. B. Maus auf fokussiertes ComBoboxGadget bewegen und durch Einträge scrollen)
Verfasst: 13.11.2007 20:01
von Little John
Thomas hat geschrieben:Schon fertig:
Super, vielen Dank!!
Gruß, Little John
Verfasst: 13.11.2007 20:13
von Thomas
AND51 hat geschrieben:@ Little John:
Schon mal aufgefallen, dass du generell in allen Fenster mit TAB von einem Gadget zum nächsten springen kannst? In deinen selbsterstellen Anwendungen geht das auch, ohne, dass du zusätzlichen Code brauchst.
Jedes Gadget, an dem du vorbeikommst, wenn du TAb drückst kannst du verändern:
- Auslösen mit Eingabe/Leertaste (z. B. Buttons)
- verändern mit Pfeil Rauf/Runter (z. B. ComboBoxGadget)
- Pfeil Links/Rechts (z. B. TrackBarGadget)
- Bild Auf/Ab (kann Pfeiltasten ersetzen, springt etwas weiter)
- Scrollrad der Maus (z. B. Maus auf fokussiertes ComBoboxGadget bewegen und durch Einträge scrollen)
Ja schon klar, aber hier gigs darum, andere Tasten dafür zu belegen ...
Verfasst: 13.11.2007 20:15
von AND51
Wieso? Pfeil hoch/runter ist doch eine Standardtaste. Wieso sollte man dafür extra nochmal Code anfertigen?
Schließlich schreibe ich auch keinen extra Code, um mit Pfeil links/rechts ein TrackBarGadget zu ändern, das geht auch automatisch.
Verfasst: 13.11.2007 20:25
von Little John
Thomas hat geschrieben:aber hier gigs darum, andere Tasten dafür zu belegen
Nicht ganz, denn was Dein obiges Programm macht, lässt sich ja standardmäßig auch nicht mit TAB o.Ä. machen.
Wenn man z.B. 2 Buttons und eine Optionen-Gruppe, bestehend aus 3 Optionen, hat, dann kann man mit TAB zwischen den Buttons und der Optionen-Gruppe wechseln, aber eine bestimmte Option
innerhalb der Gruppe läßt suich standardmäßig nur mit der Maus auswählen, oder nicht?
Gruß, Little John
Verfasst: 13.11.2007 20:50
von Little John
AND51 hat geschrieben:Wieso? Pfeil hoch/runter ist doch eine Standardtaste. Wieso sollte man dafür extra nochmal Code anfertigen?
Wenn man den Code startet, den ich oben gepostet hatte, dann ist zunächst die 2. Option ausgewählt. Wie bitte soll man -- ohne zusätzlichen Code zu schreiben -- eine der anderen Optionen auswählen? Es will mir mit den Pfeiltasten, der Leertaste usw. nicht gelingen.
Gruß, Little John
Verfasst: 13.11.2007 21:37
von AND51
Little John hat geschrieben:Wenn man z.B. 2 Buttons und eine Optionen-Gruppe, bestehend aus 3 Optionen, hat, dann kann man mit TAB zwischen den Buttons und der Optionen-Gruppe wechseln, aber eine bestimmte Option innerhalb der Gruppe läßt suich standardmäßig nur mit der Maus auswählen, oder nicht?
Nein. Man muss sich eben nur damit auskenne.
Richtig: Mit Tab zwischen Gadgets wechseln.
Falsch: Innerhalb der Option-Gruppe mit Maus wählen.
Richtig: Innerhalb der Option-Gruppe wird mit Pfeiltasten gewählt!
Deshalb ist es nicht nötig, dafür extra Code zu schreiben. Habe es jedoch gerade überprüft: PureBasic versagt mal wieder. Mit dem Beispiel aus der Hilfe/OptionGadget funzt es nicht. Wohl aber in allen anderen Programmen: Windows-Eigenschaftsdialogen, Internet Explorer, ...
Du musst dir einfach nur mal öfter Zeit nehmen und bewusst mit Tastatur navigieren. Dann findest du es schon raus, was alles geht. Deshalb find ich es von Programmierern immer doof, die ihren Menüs kein & für eine bessere Tastaturnavigation spendieren, obwohl dies der einfachste Trck von allen ist.
Mit vielen kleinen Tricks, die keinen großen Aufwand darstellen kann man dem User das navigieren sehr erleichtern, aber viele vernachlässigen dies.