Seite 1 von 1

Gadgets auf Toolbar -> geht nicht immer

Verfasst: 26.10.2004 18:37
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

Verfasst: 26.10.2004 19:32
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...

Verfasst: 26.10.2004 19:43
von Rob
Stimmt, man kann ja einfach den Wert überprüfen. Danke <)