Wolfram wrote:How can I get an event from a TrackBarGadget?
In this example I get the event tree times.
Actually you get more events when you move more ticks.
1st event seems to be mouse button down.
Next events are one event for each tick moved.
Last event seems to be mouse button up event.
Unfortunately EventType() is not supported for TrackBarGadget.
You see the behavior better when using BindGadgetEvent() and doing it slowly:
- mouse button down -> event fired
- move slider -> event for each movement
- mouse button up -> event fired
Doing event handling in the main event loop, all this events get collected
and fire after releasing the mouse button. So you get at least 3 events,
and if you move more ticks, you get even more events.
Code: Select all
Procedure onTrackbarChange()
Debug "State: "+GetGadgetState(0)+" EventType: "+EventType()
EndProcedure
If OpenWindow(0, 0, 0, 320, 200, "TrackBarGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TrackBarGadget(0, 10, 40, 250, 20, 0, 10, #PB_TrackBar_Ticks)
BindGadgetEvent(0,@onTrackbarChange())
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 0
;Debug "State: "+GetGadgetState(0)+" EventType: "+EventType()
EndSelect
Case #PB_Event_CloseWindow
close = #True
EndSelect
Until close = #True
EndIf