Hotkey auf Button legen?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Hotkey auf Button legen?

Beitrag von Kurzer »

Hallo zusammen,

ich habe ein Fenster mit Buttons drin.
Nun möchte ich die Funktion, die hinter einem Button liegt, auch mit der Taste F8 ausführen.

Mein Ansatz innerhalb des Eventloops ist dieser:

Code: Alles auswählen

      If Event = #PB_Event_Gadget Or Event = #WM_KEYUP
        If GadgetID = #Button_GO Or (Event = #WM_KEYUP And EventwParam = #VK_F8)
          Debug "Klappt!"
        EndIf
      EndIf
Geht sowas auch eleganter? Also kann man die Taste F8 dem Button schon direkt zuordnen so daß man nur noch auf #PB_Event_Gadget reagieren muß?

Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

AddKeyboardShortcut()
Benutzeravatar
C4rizz
Beiträge: 223
Registriert: 01.05.2006 12:43
Computerausstattung: Desktop : Amd Athlon X2 3,2 ghz Black Edition. 4GB Corsair XMS DDR2, nVidia 460 gtx Sonic Extreme

Notebook : [Asus] i5 @ 2,9 ghz, 8GB Corsair DDR3, nVidia gt 540m

Internet : DSL - 16 Mbit | HSDPA - 7,2 Mbit
Wohnort: Celle

Beitrag von C4rizz »

Machs mit Shortcuts.
Die reagieren denn zwar auf Menuevent aber das is ja net weiter wild oder?

Beispiel:

Code: Alles auswählen

OpenWindow(1,0,0,200,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  CreateGadgetList(WindowID(1))
    ButtonGadget(1,10,10,40,25,"Press",0)
AddKeyboardShortcut(1,#PB_Shortcut_E,1) ;<---Wenn E gedrückt wurde dann Event

Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
  Select EventGadget()
    Case 1
      MessageRequester("Test","Button wurde gedrückt",0)
  EndSelect
EndIf
If event = #PB_Event_Menu
  Select EventMenu()
    Case 1
      MessageRequester("Test","Button wurde gedrückt",0)
  EndSelect
EndIf
Until event = #PB_Event_CloseWindow
So hoffe das hilft :allright:
PB 3.94/4.10
Meine Hompage
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Mit Shortcut und Menu_Event hatte ich es vorher...
Aber das ist doch viel unübersichtlicher und aufwändiger.

So... (siehe erstes posting)... habe ich wenigstens alles in einer Event-Routine.

Ich dachte nur, daß es soetwas wie diesen Menu_Event (Shortcut) auch für Button-Events gibt. Aber wohl eher nicht. :)

Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Beitrag von hjbremer »

so vielleicht ?

Code: Alles auswählen

#Window_nr = 0
#Button_GO = 1

OpenWindow(#Window_nr,0,0,200,200,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
  CreateGadgetList(WindowID(#Window_nr)) 
    ButtonGadget(#Button_GO,10,10,40,25,"Press",0) 

AddKeyboardShortcut(#Window_nr,#PB_Shortcut_Alt | #PB_Shortcut_F8,#Button_GO) ;<-Wenn ALT+F8 gedrückt, dann Event 

Repeat 

    event = WaitWindowEvent() 
    
    If event = #PB_Event_Gadget Or event = #PB_Event_Menu
      
        Select EventGadget() 

          Case #Button_GO 
            MessageRequester("Test","Button wurde gedrückt",0) 

        EndSelect 
    
    EndIf 

Until event = #PB_Event_CloseWindow 
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Antworten