Gadgets auf Toolbar -> geht nicht immer

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Rob
Shadow Admin
Beiträge: 258
Registriert: 26.08.2004 01:39
Kontaktdaten:

Gadgets auf Toolbar -> geht nicht immer

Beitrag von Rob »

Mein Plan war, ein TrackBarGadget auf die Toolbar zu packen. Dies geht auch, indem man bei [c]CreateGadgetList()[/c] einfach das Handle der Toolbar angibt. Dummerweise liefert diese TrackBar keine Events zurück. Bei Buttons auf einer Toolbar funktioniert es aber.
Gibts dafür eine einfache Lösung oder muss ich Tonnen an WinAPI-Code (wenn ja, welchen :)) in eine Callback-Funktion setzen?

Beispiel:

Code: Alles auswählen

win = OpenWindow(0,0,0,200,100,#PB_Window_SystemMenu | #PB_Window_ScreenCentered, "TrackToolBar") 

tb = CreateToolBar(0,win) 
ToolBarStandardButton(0,#PB_ToolBarIcon_New) 

CreateGadgetList(tb) 
#button = 0 
#trackbar = 1 
ButtonGadget(#button,30,0,50,20,"Button") 
TrackBarGadget(#trackbar,85,0,100,20,0,100) 

Repeat 
  eventid = WaitWindowEvent() 
  
  If eventid = #PB_Event_Gadget 
    If EventGadgetID() = #button 
      Debug "Button!" 
    ElseIf EventGadgetID() = #trackbar 
      Debug "Trackbar!" 
    EndIf 
  EndIf 
  
Until eventid = #PB_Event_CloseWindow
Build a man a fire and he's warm for a day. Set a man on fire and he's warm for the rest of his life
Benubi
Beiträge: 187
Registriert: 22.10.2004 17:51
Wohnort: Berlin, Wedding

Beitrag von Benubi »

hallo rob,

ich weiss nicht ob es dir hilft, aber so kann ich "trackbar!" auf dem debug-fenster ausgeben:

Code: Alles auswählen

win = OpenWindow(0,0,0,200,100,#PB_Window_SystemMenu | #PB_Window_ScreenCentered, "TrackToolBar") 

tb = CreateToolBar(0,win) 
ToolBarStandardButton(0,#PB_ToolBarIcon_New) 

CreateGadgetList(tb) 
#button = 1 
#trackbar = 2 
ButtonGadget(#button,30,0,50,20,"Button") 
TrackBarGadget(#trackbar,85,0,100,20,0,100)
SetGadgetState(#trackbar,50)
wertalt.l
Repeat 
     wertalt = GetGadgetState(#trackbar) 
     eventid = WaitWindowEvent() 
   
     If eventid = #PB_Event_Gadget Or eventid=#PB_Event_Gadget
          If EventGadgetID() = #button 
               Debug "Button!" 
          EndIf 
          
     EndIf 
     If wertalt <> GetGadgetState(#trackbar)
          Debug "Trackbar!"
     EndIf
Until eventid = #PB_Event_CloseWindow
Anscheinend lösst das ändern des Wertes kein Event aus...
Vielleicht kannst du den wert irgendwie nur überprüfen, wenn die maus geklickt wurde !? ich kenn mich noch nicht so aus...
Benutzeravatar
Rob
Shadow Admin
Beiträge: 258
Registriert: 26.08.2004 01:39
Kontaktdaten:

Beitrag von Rob »

Stimmt, man kann ja einfach den Wert überprüfen. Danke <)
Build a man a fire and he's warm for a day. Set a man on fire and he's warm for the rest of his life
Antworten