Tastaturevents weiterleiten

Anfängerfragen zum Programmieren mit PureBasic.
lukanga
Beiträge: 12
Registriert: 19.06.2007 22:23
Wohnort: Griesheim

Beitrag von lukanga »

Jau!!! Vielen Dank, habs auch gefunden
ts_soft hat es geschrieben hat geschrieben:Funktioniert aber nur mit einigen Gadgets
Ohje! Mit welchen nicht?

So siehts jetzt aus:

Code: Alles auswählen

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
PB4.02 WinXP
Irgendwann steig' ich auf Linux um!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich verstehe Deinen Code nicht, bin auch kein Freund von
windowsuntpyischen (dostypischen) Tastaturhandling. aber im Eventloop
sollte es in etwa so aussehen:

Code: Alles auswählen

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.
Bild
lukanga
Beiträge: 12
Registriert: 19.06.2007 22:23
Wohnort: Griesheim

Beitrag von lukanga »

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.

Vielen Dank! Gute Nacht!
PB4.02 WinXP
Irgendwann steig' ich auf Linux um!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Sieht nicht mal ähnlich:
Select GetActiveGadget() ist nämlich doppelgemoppelt, das ActiveGadget
ist das mit dem Focus :wink:

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.
Bild
lukanga
Beiträge: 12
Registriert: 19.06.2007 22:23
Wohnort: Griesheim

Beitrag von lukanga »

Wenn AddKeyboardShortcut mit Gadgets ginge, stimme ich Dir zu, hab ich aber mit Gadgets nicht hinbekommen

AddKeyboardShortcut(#Window, Shortcut, Event)
PB4.02 WinXP
Irgendwann steig' ich auf Linux um!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

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 :mrgreen:
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.
Bild
lukanga
Beiträge: 12
Registriert: 19.06.2007 22:23
Wohnort: Griesheim

Beitrag von lukanga »

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.

Thanks!
PB4.02 WinXP
Irgendwann steig' ich auf Linux um!
Antworten