So I realized this little program: feel free to change what's wrong.
(Hundredth of a second , with delay = 25 and manual start/stop, are just for fun!)
Code: Select all
;Purebasic 5.0
;:::::::::::::::::::::. Simple Chrono .:::::::::::::::::::::::::
Global start.d, stop.d
Procedure.s timeformat(time)
seconds.d=time/1000
If seconds>59.999
minutes.d=Int(seconds/60)
seconds=seconds-minutes*60
EndIf
If minutes>59.999
hours.d=Int(minutes/60)
minutes=minutes-hours*60
EndIf
hours2$=Right("00"+Str(hours),2)
minutes2$=Right("00"+Str(minutes),2)
seconds2$=Right("0"+StrD(seconds,2),5)
result.s=hours2$+":"+minutes2$+":"+seconds2$
ProcedureReturn Result
EndProcedure
Procedure chrono(parameter)
Repeat
stop=ElapsedMilliseconds()
SetGadgetText(10,timeformat(stop-start))
Delay(25)
ForEver
EndProcedure
If OpenWindow(0, 0, 0, 180, 180, "Chrono", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered )
ButtonGadget(1, 10, 10, 70, 40, "Start")
ButtonGadget(2, 10, 10, 70, 40, "Stop")
ButtonGadget(3, 100, 10, 70, 40, "Lap Time")
ButtonGadget(4, 10, 10, 70, 40, "Clear")
HideGadget(2,1)
HideGadget(3,1)
HideGadget(4,1)
TextGadget(10, 10, 60, 160, 30, "00:00:00") ; max 99h 59' 59"
EditorGadget(11, 10, 110, 160, 60)
Font1 = LoadFont(#PB_Any, "Quartz MS" , 18, #PB_Font_Bold)
SetGadgetFont(10, FontID(Font1))
SetGadgetColor(10, #PB_Gadget_BackColor, $000000)
SetGadgetColor(10, #PB_Gadget_FrontColor, $04DF1D)
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 1 ; start
start=ElapsedMilliseconds()
;start=start-359990000
thread=CreateThread(@chrono(),0)
HideGadget(1,1)
HideGadget(2,0)
HideGadget(3,0)
Case 2 ; stop
stop=ElapsedMilliseconds()
KillThread(thread)
SetGadgetText(10,timeformat(stop-start))
AddGadgetItem(11, a, timeformat(stop-start))
HideGadget(2,1)
HideGadget(4,0)
HideGadget(3,1)
Case 3 ; laptime
stop=ElapsedMilliseconds()
AddGadgetItem(11, a, timeformat(stop-start))
Case 4 ; clear
ClearGadgetItems(11)
SetGadgetText(10,"00:00:00")
HideGadget(4,1)
HideGadget(1,0)
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
End