Seite 1 von 1

Returntaste statt Leertaste um ButtonGadget auszulösen

Verfasst: 12.11.2006 21:15
von Werner
Hallo PureBasic-Gemeinde,

habe das Problem, das ich die aktivierte Taste (bei Benutzung ohne Maus) nur mit der Leertaste ausführen kann. Schön wäre es, wenn ich es mit der Return-Taste machen könnte.

PS: Habe bei der Suche natürlich viel zu dem Thema Tasten gefunden - es aber irgendwie nicht geblickt :-(

Code: Alles auswählen


  OpenWindow(0,0,0,150,50, "Anwendung", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget) 

If CreateGadgetList(WindowID(0))
  	ButtonGadget  (1,1, 10,60,20,"Button 1")
	  GadgetToolTip(1, "Ohne Maus benutze die Leertaste")
	  SetActiveGadget(1)
EndIf   


Repeat
  EventID = WaitWindowEvent()
   
    If EventID = #PB_Event_Gadget
        Gadget  = EventGadget()  
        Select Gadget
          Case 1,#PB_EventType_ReturnKey 
            MessageRequester("Information", "ButtonGadget", 0)
          EndSelect      
    EndIf

    If EventID = #PB_Event_CloseWindow
      Quit = 1
    EndIf

Until Quit = 1


End


Verfasst: 12.11.2006 21:26
von ts-soft
Controls reagieren normallerweise nicht auf Return, nur in Dialogfenstern
wird dies Teilweise praktiziert. PB erstellt aber keine Dialogfenster, sondern
Fenster :mrgreen:
Folgender Code bringt Dich aber zum Ziel:

Code: Alles auswählen

OpenWindow(0,0,0,150,50, "Anwendung", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
AddKeyboardShortcut(0, #PB_Shortcut_Return, 1)
If CreateGadgetList(WindowID(0))
  ButtonGadget  (1,1, 10,60,20,"Button 1")
  GadgetToolTip(1, "Ohne Maus benutze die Leertaste")
  SetActiveGadget(1)
EndIf


Repeat
  EventID = WaitWindowEvent()
  
  If EventID = #PB_Event_Menu
    Menu = EventMenu()
    Select Menu
      Case 1 ; Return wurde gedrückt
        If GetActiveGadget() = 1 ; Mein Button 1 hat den Focus
          MessageRequester("Information", "ButtonGadget", 0)
        EndIf
    EndSelect
  EndIf

  If EventID = #PB_Event_Gadget
    Gadget  = EventGadget()
    Select Gadget
      Case 1
        MessageRequester("Information", "ButtonGadget", 0)
    EndSelect
  EndIf

  If EventID = #PB_Event_CloseWindow
    Quit = 1
  EndIf

Until Quit = 1


End

Verfasst: 12.11.2006 21:50
von tobe
hi,

ich hab es so gelöst:

Code: Alles auswählen

Procedure msg()
  MessageRequester("Information", "ButtonGadget", 0)
EndProcedure

OpenWindow(0,0,0,150,50, "Anwendung", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
If CreateGadgetList(WindowID(0))
  ButtonGadget  (1,1, 10,60,20,"Button 1")
  GadgetToolTip(1, "Ohne Maus benutze die Leertaste")
  SetActiveGadget(1)
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget() 
        Case 1
          msg()
      EndSelect 
    Case #WM_KEYUP
      If EventwParam() = #VK_RETURN
        If GetActiveGadget() = 1
          msg()
        EndIf
      EndIf
    Case #PB_Event_CloseWindow
      Break
  EndSelect
ForEver
End

Returntaste statt Leertaste um ButtonGadget auszulösen

Verfasst: 12.11.2006 21:51
von Werner
@ts-soft / tobe
Vielen Dank für eure Mühe! :allright:

Grüße
Werner