I've created the following program, utilising 4 spin gadgets, however I would like to know if there is an better/easier way, or an all-in-one gagdet that does what I want
Here's the code
Code: Select all
;TimeSpin Gadget Test - I Need Hours:Mins:Secs:Centis
#SP_Hours=1
#SP_Mins=2
#SP_Secs=3
#SP_Centis=4
Procedure UpdateHours()
valh.w = GetGadgetState(#SP_Hours)
If valh=-1
valh=11
EndIf
If valh=12
valh=0
EndIf
SetGadgetState(#SP_Hours,valh)
SetGadgetText(#SP_Hours,RSet(Str(valh),2,"0"))
EndProcedure
Procedure UpdateMinutes()
valm.w = GetGadgetState(#SP_Mins)
If valm=-1
valm=059
SetGadgetState(#SP_Hours,GetGadgetState(#SP_Hours)-1)
UpdateHours()
EndIf
If valm=60
valm=0
SetGadgetState(#SP_Hours,GetGadgetState(#SP_Hours)+1)
UpdateHours()
EndIf
SetGadgetState(#SP_Mins,valm)
SetGadgetText(#SP_Mins,RSet(Str(valm),2,"0"))
EndProcedure
Procedure UpdateSeconds()
vals.w = GetGadgetState(#SP_Secs)
If vals=-1
vals=059
SetGadgetState(#SP_Mins,GetGadgetState(#SP_Mins)-1)
UpdateMinutes()
EndIf
If vals=60
vals=0
SetGadgetState(#SP_Mins,GetGadgetState(#SP_Mins)+1)
UpdateMinutes()
EndIf
SetGadgetState(#SP_Secs,vals)
SetGadgetText(#SP_Secs,RSet(Str(vals),2,"0"))
EndProcedure
Procedure UpdateCentis()
valc.w = GetGadgetState(#SP_Centis)
If valc=-1
valc=099
SetGadgetState(#SP_Secs,GetGadgetState(#SP_Secs)-1)
UpdateSeconds()
EndIf
If valc=100
valc=0
SetGadgetState(#SP_Secs,GetGadgetState(#SP_Secs)+1)
UpdateSeconds()
EndIf
SetGadgetState(#SP_Centis,valc)
SetGadgetText(#SP_Centis,RSet(Str(valc),2,"0"))
EndProcedure
If OpenWindow(0, 0, 0, 200, 70, "TimeSpin Gadget Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
SpinGadget(#SP_Hours, 20, 20, 30, 20, -1, 12, #PB_Spin_ReadOnly | #PB_Spin_Numeric)
SetGadgetState (#SP_Hours, 0)
SetGadgetText(#SP_Hours, "00")
SpinGadget(#SP_Mins, 60, 20, 30, 20, -1, 60, #PB_Spin_ReadOnly | #PB_Spin_Numeric)
SetGadgetState (#SP_Mins, 0)
SetGadgetText(#SP_Mins, "00")
SpinGadget(#SP_Secs, 100, 20, 30, 20, -1, 60, #PB_Spin_ReadOnly | #PB_Spin_Numeric)
SetGadgetState (#SP_Secs, 0)
SetGadgetText(#SP_Secs, "00")
SpinGadget(#SP_Centis, 140, 20, 30, 20, -1, 100, #PB_Spin_ReadOnly | #PB_Spin_Numeric)
SetGadgetState (#SP_Centis, 0)
SetGadgetText(#SP_Centis, "00")
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
Select EventGadget()
Case #SP_Hours
UpdateHours()
Case #SP_Mins
UpdateMinutes()
Case #SP_Secs
UpdateSeconds()
Case #SP_Centis
UpdateCentis()
EndSelect
EndIf
Until event = #PB_Event_CloseWindow
EndIf
Any thoughts?