hallo zusammen,
also hier mal ein program, wie ich mir eine uhr vorstelle.
- sie zeigt den tag, das datum und die systemuhrzeit an.
- sie kann mit zwei checkboxen die verstrichene zeit berechnen.
- sie kann verstrichene zeit eines manuellen zeitraums berechnen.
- sie hat eine alarm funktion die sich an und abschalten laesst.
- sie hat eine stoppuhr funktion welche start, stop, weiter und reset hat.
- sie hat einen countdowntimer der start, stop, weiter und reset hat.
was sie auch hat sind einige 'bugs' die ich gerne beheben wuerde, aber
wenn sie nicht behoben werden koennen, dann waere das kein weltuntergang.
manche der bugs sind wahrscheinlich nicht wirklich 'bugs' sondern eher
kleine dinge die nicht so laufen wie ich es mir vorgestellt habe:
1.) Beim Start wird der Tag und das Datum sehr spaet geladen.
2.) Beim Start wird die Uhr sehr spaet geladen.
3.) Die Befuellung der Dropdown-Boxen dauert echt (viel zu) lange.
4.) Wenn 'File' vom Menu oder 'Help' vom Menu ausgewaehlt wird stoppt die Uhr.
5.) Die manuelle Berechnung von Zeit dauert zu lang.
6.) bei der checkbox messung kann man mit auch nur mit 'Stop' zeit messen.
7.) wenn der alarm getriggert worden ist muss ich teilweise (zu) oft 'ok' klicken.
8.) wenn countdown timer zu ende und message fenster kommt, dann haelt die uhr an.
9.) trotz wertezuruecksetzung vom timer wird bleibt der letzte wert immer stehen.
10.) leider kein arial vergleichbarer font
ich habe das gleiche programm in python geschrieben und da habe ich
allerdings keine der benannten bugs. das einzige was ich python noch
nicht gemacht habe ist das verhalten der buttons anzupassen, welches
hier in AutoIt gemacht worden ist, aber daran arbeite ich gerade noch.
ich benutze in python 'font = QtGui.QFont()' der sehr nach 'arial'
aussieht und echt schoen ist. bei bedarf oder wunsch wuerde ich den
entsprechenden code auch von der python version posten, aber ich denke
das wird hier nicht noetig sein?
ich mag autoit irgendwie mehr, weil ich dort einfacher und besser eine
GUI machen kann und bei python ist das meines erachtens nach etwas
umstaendlicher, also ist mein wunsch in erster linie in AutoIt zu
bleiben wenn denn moeglich.
hier mal der stand von heute falls jemand interesse hat:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#include <DateTimeConstants.au3>
#include <GDIPlus.au3>
#include <WinAPIGdi.au3>
#Region ### START Koda GUI section ###
Global $illclock = GUICreate("Clocking It!", 338, 791, -1, -1, -1, BitOR($WS_EX_COMPOSITED, $WS_EX_LAYERED))
Global $MenuFile = GUICtrlCreateMenu("File")
Global $MenuReset = GUICtrlCreateMenuItem("Reset", $MenuFile)
Global $MenuExit = GUICtrlCreateMenuItem("Exit", $MenuFile)
Global $MenuHelp = GUICtrlCreateMenu("Help")
Global $MenuInfo = GUICtrlCreateMenuItem("Info", $MenuHelp)
Global $MenuAbout = GUICtrlCreateMenuItem("About", $MenuHelp)
Global $DayDate = GUICtrlCreateLabel("DayDate", 40, 20, 262, 33)
Global $Clock = GUICtrlCreateLabel("Clock", 40, 66, 262, 53)
Global $StartCheckBox = GUICtrlCreateCheckbox("Start", 16, 160, 41, 17)
Global $StopCheckBox = GUICtrlCreateCheckbox("Stop", 288, 160, 41, 17)
Global $Autocalculation = GUICtrlCreateLabel("00:00:00.000", 64, 152, 213, 33)
Global $StartMCalc = GUICtrlCreateLabel("Start Calculation:", 16, 219, 84, 17)
Global $EndMCalc = GUICtrlCreateLabel("End Calculation:", 16, 251, 81, 17)
Global $MStartHrs= GUICtrlCreateCombo("", 104, 216, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $MStartMin = GUICtrlCreateCombo("", 160, 216, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $MStartSec = GUICtrlCreateCombo("", 216, 216, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $MStartMil = GUICtrlCreateCombo("", 272, 216, 50, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $MEndHrs = GUICtrlCreateCombo("", 104, 248, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $MEndMin = GUICtrlCreateCombo("", 160, 248, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $MEndSec = GUICtrlCreateCombo("", 216, 248, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $MEndMil = GUICtrlCreateCombo("", 272, 248, 50, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $MCalcGo = GUICtrlCreateButton("Calculate Time", 16, 280, 123, 33)
Global $MCalResult = GUICtrlCreateLabel("00:00:00.000", 152, 280, 170, 33)
Global $SetAlarm = GUICtrlCreateLabel("Set Alarm Time:", 16, 355, 86, 17)
Global $AlarmHrs = GUICtrlCreateCombo("", 104, 352, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $AlarmMin = GUICtrlCreateCombo("", 160, 352, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $AlarmSec = GUICtrlCreateCombo("", 216, 352, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $AlarmMil = GUICtrlCreateCombo("", 272, 352, 50, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $AlarmOn = GUICtrlCreateButton("ON", 16, 384, 147, 25)
Global $AlarmOff = GUICtrlCreateButton("OFF", 176, 384, 147, 25)
Global $Stopwatch = GUICtrlCreateLabel("00:00:00.000", 40, 448, 255, 33)
Global $StopwatchStart = GUICtrlCreateButton("START", 11, 504, 75, 25)
Global $StopwatchStop = GUICtrlCreateButton("STOP", 91, 504, 75, 25)
Global $StopwatchCont = GUICtrlCreateButton("CONTINUE", 171, 504, 75, 25)
Global $StopwatchReset = GUICtrlCreateButton("RESET", 251, 504, 75, 25)
Global $SetCntdwn = GUICtrlCreateLabel("Set Countdown:", 16, 579, 80, 17)
Global $CountHrs = GUICtrlCreateCombo("", 104, 576, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $CountMin = GUICtrlCreateCombo("", 160, 576, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $CountSec = GUICtrlCreateCombo("", 216, 576, 45, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $CountMil = GUICtrlCreateCombo("", 272, 576, 50, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$WS_VSCROLL))
Global $Countdown = GUICtrlCreateLabel("00:00:00.000", 40, 616, 250, 41)
Global $CountStart = GUICtrlCreateButton("START", 11, 672, 75, 25)
Global $CountStop = GUICtrlCreateButton("STOP", 91, 672, 75, 25)
Global $CountCont = GUICtrlCreateButton("CONTINUE", 171, 672, 75, 25)
Global $CountReset = GUICtrlCreateButton("RESET", 251, 672, 75, 25)
Global $Exit = GUICtrlCreateButton("EXIT", 232, 720, 91, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
; #####################################################################
; # Other Global Values To Declare
; #####################################################################
Global $AlarmSet = False
Global $AlarmTargetMS = 0
Global $hAlarmPopup = 0
Global $bAlarmPopupVisible = False
Global $btnAlarmOK = 0
Global $runrunrun = 0 ; Timer handle for current running timer
Global $elapsedBeforeStop = 0 ; Accumulated elapsed time before last stop
Global $isRunning = False ; Stopwatch running state
Global $g_CountdownTotalMS = 0 ; Total countdown duration (fixed)
Global $g_CountdownRemainingMS = 0 ; Time left when paused or running
Global $g_CountdownStartTime = 0 ; TimerInit() timestamp for running countdown
Global $g_CountdownRunning = False ; True when countdown is actively running
; #####################################################################
; # Style Values for indivdual Parts
; #####################################################################
GUICtrlSetFont($DayDate, 14, 600, 0, "Consolas")
GUICtrlSetStyle($DayDate, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor($DayDate, -1)
GUICtrlSetFont($Clock, 26, 900, 0, "Consolas")
GUICtrlSetStyle($Clock, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor($Clock, -1)
GUICtrlSetFont($Autocalculation, 20, 600, 0, "Consolas")
GUICtrlSetStyle($Autocalculation, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor($Autocalculation, -1)
GUICtrlSetFont($MCalResult, 18, 600, 0, "Consolas")
GUICtrlSetStyle($MCalResult, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor($MCalResult, -1)
GUICtrlSetState($AlarmOff, $GUI_DISABLE)
GUICtrlSetFont($Stopwatch, 26, 900, 0, "Consolas")
GUICtrlSetStyle($Stopwatch, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor($Stopwatch, -1)
GUICtrlSetState($StopwatchStart, $GUI_ENABLE)
GUICtrlSetState($StopwatchReset, $GUI_DISABLE)
GUICtrlSetState($StopwatchStop, $GUI_DISABLE)
GUICtrlSetState($StopwatchCont, $GUI_DISABLE)
GUICtrlSetFont($Countdown, 26, 900, 0, "Consolas")
GUICtrlSetStyle($Countdown, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor($Countdown, -1)
GUICtrlSetState($CountStart, $GUI_ENABLE)
GUICtrlSetState($CountReset, $GUI_DISABLE)
GUICtrlSetState($CountStop, $GUI_DISABLE)
GUICtrlSetState($CountCont, $GUI_DISABLE)
; #####################################################################
; # Fill Data into Dropdown Boxes
; #####################################################################
; Fill Dropdown: Hours
Local $sHours = ""
For $i = 0 To 23
$sHours &= StringFormat("%02d", $i) & "|"
Next
$sHours = StringTrimRight($sHours, 1)
GUICtrlSetData($MStartHrs, $sHours, "00")
GUICtrlSetData($MEndHrs, $sHours, "00")
GUICtrlSetData($AlarmHrs, $sHours, "00")
GUICtrlSetData($CountHrs, $sHours, "00")
; Fill Dropdown: Minutes and Seconds
Local $sMinSec = ""
For $i = 0 To 59
$sMinSec &= StringFormat("%02d", $i) & "|"
Next
$sMinSec = StringTrimRight($sMinSec, 1)
GUICtrlSetData($MStartMin, $sMinSec, "00")
GUICtrlSetData($MEndMin, $sMinSec, "00")
GUICtrlSetData($AlarmMin, $sMinSec, "00")
GUICtrlSetData($CountMin, $sMinSec, "00")
GUICtrlSetData($MStartSec, $sMinSec, "00")
GUICtrlSetData($MEndSec, $sMinSec, "00")
GUICtrlSetData($AlarmSec, $sMinSec, "00")
GUICtrlSetData($CountSec, $sMinSec, "00")
; Fill Dropdown: Milliseconds
Local $sMillis = ""
For $i = 0 To 999
$sMillis &= StringFormat("%03d", $i) & "|"
Next
$sMillis = StringTrimRight($sMillis, 1)
GUICtrlSetData($MStartMil, $sMillis, "000")
GUICtrlSetData($MEndMil, $sMillis, "000")
GUICtrlSetData($AlarmMil, $sMillis, "000")
GUICtrlSetData($CountMil, $sMillis, "000")
; #####################################################################
; # Main Loop for the actual Application
; #####################################################################
While 1
$nMsg = GUIGetMsg()
If $isRunning And $runrunrun <> 0 Then
$totalElapsed = $elapsedBeforeStop + TimerDiff($runrunrun)
Else
$totalElapsed = $elapsedBeforeStop
EndIf
GUICtrlSetData($Stopwatch, FormatTime($totalElapsed))
Local $aDays[7] = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
Local $dayOfWeek = _DateToDayOfWeekISO(@YEAR, @MON, @MDAY)
Local $dayname = $aDays[$dayOfWeek - 1]
; Format the date string
Local $DateString = $dayname & ", " & @MDAY & "." & @MON & "." & @YEAR
GUICtrlSetData($DayDate, $DateString)
; Update label text
Local $TimeString = StringFormat("%02d:%02d:%02d.%02d0", @HOUR, @MIN, @SEC, @MSEC / 10)
GUICtrlSetData($Clock, $TimeString)
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Exit, $MenuExit
ExitLoop
Case $StartCheckBox
If GUICtrlRead($StartCheckBox) = $GUI_CHECKED Then
GUICtrlSetData($StartCheckBox, 'GO')
$StartCBTime = TimerInit()
Else
GUICtrlSetData($StartCheckBox, 'Start')
EndIf
Case $StopCheckBox
If GUICtrlRead($StopCheckBox) = $GUI_CHECKED Then
GUICtrlSetData($StopCheckBox, 'END')
; Calculate elapsed time in milliseconds
Local $elapsedMS = TimerDiff($StartCBTime)
GUICtrlSetData($Autocalculation, FormatTime($elapsedMS))
Else
GUICtrlSetData($StopCheckBox, 'Stop')
EndIf
Case $MCalcGo
_CalculateManualTime()
Case $AlarmOn
_SetAlarm()
$AlarmSet = True
GUICtrlSetState($AlarmOn, $GUI_DISABLE)
GUICtrlSetState($AlarmOff, $GUI_ENABLE)
Case $AlarmOff
_ClearAlarm()
$AlarmSet = False
GUICtrlSetState($AlarmOff, $GUI_DISABLE)
GUICtrlSetState($AlarmOn, $GUI_ENABLE)
Case $StopwatchStart
$runrunrun = TimerInit()
$elapsedBeforeStop = 0
$isRunning = True
GUICtrlSetState($StopwatchStop, $GUI_ENABLE)
GUICtrlSetState($StopwatchStart, $GUI_DISABLE)
GUICtrlSetState($StopwatchReset, $GUI_DISABLE)
GUICtrlSetState($StopwatchCont, $GUI_DISABLE)
Case $StopwatchStop
If $isRunning Then
$elapsedBeforeStop += TimerDiff($runrunrun)
$isRunning = False
EndIf
GUICtrlSetState($StopwatchReset, $GUI_ENABLE)
GUICtrlSetState($StopwatchCont, $GUI_ENABLE)
Case $StopwatchCont
If Not $isRunning Then
$runrunrun = TimerInit()
$isRunning = True
EndIf
GUICtrlSetState($StopwatchReset, $GUI_DISABLE)
GUICtrlSetState($StopwatchCont, $GUI_DISABLE)
Case $StopwatchReset
$elapsedBeforeStop = 0
$isRunning = False
$runrunrun = 0 ; Reset timer handle
GUICtrlSetData($Stopwatch, "00:00:00.000")
GUICtrlSetState($StopwatchStart, $GUI_ENABLE)
GUICtrlSetState($StopwatchReset, $GUI_DISABLE)
GUICtrlSetState($StopwatchStop, $GUI_DISABLE)
GUICtrlSetState($StopwatchCont, $GUI_DISABLE)
Case $CountStart
_ReadyCountdownTimer() ; Sets $g_CountdownTotalMS, $g_CountdownStartTime, $g_CountdownRunning = True
$g_CountdownRemainingMS = $g_CountdownTotalMS
GUICtrlSetState($CountStop, $GUI_ENABLE)
GUICtrlSetState($CountStart, $GUI_DISABLE)
GUICtrlSetState($CountReset, $GUI_DISABLE)
GUICtrlSetState($CountCont, $GUI_DISABLE)
Case $CountStop
; Pause countdown by calculating remaining time
Local $elapsedMS = TimerDiff($g_CountdownStartTime)
$g_CountdownRemainingMS = $g_CountdownRemainingMS - $elapsedMS
$g_CountdownRunning = False
GUICtrlSetState($CountStop, $GUI_DISABLE)
GUICtrlSetState($CountReset, $GUI_ENABLE)
GUICtrlSetState($CountCont, $GUI_ENABLE)
Case $CountCont
; Continue countdown by restarting timer with remaining time
$g_CountdownStartTime = TimerInit()
$g_CountdownRunning = True
GUICtrlSetState($CountReset, $GUI_DISABLE)
GUICtrlSetState($CountCont, $GUI_DISABLE)
GUICtrlSetState($CountStop, $GUI_ENABLE)
Case $CountReset
$g_CountdownRunning = False
$g_CountdownRemainingMS = 0
$g_CountdownTotalMS = 0
GUICtrlSetData($Countdown, "00:00:00.000")
GUICtrlSetState($CountStart, $GUI_ENABLE)
GUICtrlSetState($CountReset, $GUI_DISABLE)
GUICtrlSetState($CountStop, $GUI_DISABLE)
GUICtrlSetState($CountCont, $GUI_DISABLE)
Case $MenuReset
_AllBackToStartingPosition()
EndSwitch
; Handle alarm popup messages if visible
If $bAlarmPopupVisible Then
Local $popupMsg = GUIGetMsg($hAlarmPopup)
If $popupMsg = $btnAlarmOK Or $popupMsg = $GUI_EVENT_CLOSE Then
_DestroyAlarmPopup()
EndIf
EndIf
; Alarm checking
If $AlarmSet And Not $bAlarmPopupVisible Then
Local $currentMS = (@HOUR * 3600000) + (@MIN * 60000) + (@SEC * 1000) + @MSEC
If $currentMS >= $AlarmTargetMS Then
;SoundPlay(@ScriptDir & "\alarm.wav", 1)
_CreateAlarmPopup()
_ClearAlarm()
EndIf
EndIf
If $g_CountdownRunning Then
Local $elapsedMS = TimerDiff($g_CountdownStartTime)
Local $remainingMS = $g_CountdownRemainingMS - $elapsedMS
If $remainingMS <= 0 Then
$remainingMS = 0
$g_CountdownRunning = False
GUICtrlSetData($CountHrs, $sHours, "00")
GUICtrlSetData($CountMin, $sMinSec, "00")
GUICtrlSetData($CountSec, $sMinSec, "00")
GUICtrlSetData($CountMil, $sMillis, "000")
GUICtrlSetData($Countdown, "00:00:00.000")
GUICtrlSetState($CountStart, $GUI_ENABLE)
GUICtrlSetState($CountReset, $GUI_DISABLE)
GUICtrlSetState($CountStop, $GUI_DISABLE)
GUICtrlSetState($CountCont, $GUI_DISABLE)
_ShowAlarmPopup()
Else
GUICtrlSetData($Countdown, FormatTime($remainingMS))
EndIf
Else
; Countdown paused — just show remaining time without counting down
GUICtrlSetData($Countdown, FormatTime($g_CountdownRemainingMS))
EndIf
Sleep(50)
WEnd
; #####################################################################
; # Terminate the Application
; #####################################################################
GUIDelete()
; #####################################################################
; # Functions used in the Application
; #####################################################################
Func _CalculateManualTime()
Local $startH = Number(GUICtrlRead($MStartHrs))
Local $startM = Number(GUICtrlRead($MStartMin))
Local $startS = Number(GUICtrlRead($MStartSec))
Local $startMS = Number(GUICtrlRead($MStartMil))
Local $endH = Number(GUICtrlRead($MEndHrs))
Local $endM = Number(GUICtrlRead($MEndMin))
Local $endS = Number(GUICtrlRead($MEndSec))
Local $endMS = Number(GUICtrlRead($MEndMil))
Local $startTotalMS = ($startH * 3600000) + ($startM * 60000) + ($startS * 1000) + $startMS
Local $endTotalMS = ($endH * 3600000) + ($endM * 60000) + ($endS * 1000) + $endMS
Local $diffMS = $endTotalMS - $startTotalMS
If $diffMS < 0 Then $diffMS += 24 * 3600000 ; Handle crossing midnight
GUICtrlSetData($MCalResult, FormatTime($diffMS))
EndFunc
Func _SetAlarm()
Local $hrs = Number(GUICtrlRead($AlarmHrs))
Local $min = Number(GUICtrlRead($AlarmMin))
Local $sec = Number(GUICtrlRead($AlarmSec))
Local $mil = Number(GUICtrlRead($AlarmMil))
; Convert to milliseconds for easier comparison
$AlarmTargetMS = ($hrs * 3600000) + ($min * 60000) + ($sec * 1000) + $mil
$AlarmSet = True
EndFunc
Func _ClearAlarm()
$AlarmSet = False
EndFunc
Func _ShowAlarmPopup()
; Prevent multiple popups
If $hAlarmPopup And WinExists($hAlarmPopup) Then Return
; Create the popup GUI
$hAlarmPopup = GUICreate("Warning", 250, 120, -1, -1, $WS_POPUP + $WS_CAPTION + $WS_SYSMENU)
GUICtrlCreateLabel("Time's UP! Please press OK.", 20, 20, 210, 40, $SS_CENTER)
Local $btnOK = GUICtrlCreateButton("OK", 85, 70, 80, 30)
GUISetState(@SW_SHOW, $hAlarmPopup)
; Handle messages for the alarm popup separately
While 1
Local $msg = GUIGetMsg()
If $msg = $btnOK Or $msg = $GUI_EVENT_CLOSE Then
GUIDelete($hAlarmPopup)
$hAlarmPopup = 0
ExitLoop
EndIf
Sleep(10) ; Let CPU breathe
WEnd
EndFunc
Func _CreateAlarmPopup()
$hAlarmPopup = GUICreate("Warning", 250, 120, -1, -1, $WS_POPUP + $WS_CAPTION + $WS_SYSMENU)
GUICtrlCreateLabel("Time's UP! Please press OK.", 20, 20, 210, 40, $SS_CENTER)
$btnAlarmOK = GUICtrlCreateButton("OK", 85, 70, 80, 30)
GUISetState(@SW_SHOW, $hAlarmPopup)
$bAlarmPopupVisible = True
EndFunc ;==>_CreateAlarmPopup
Func _DestroyAlarmPopup()
GUIDelete($hAlarmPopup)
$hAlarmPopup = 0
$bAlarmPopupVisible = False
EndFunc ;==>_DestroyAlarmPopup
; Format milliseconds into 00:00:00.000 string
Func FormatTime($ms)
Local $hours = Int($ms / 3600000)
Local $minutes = Int(Mod($ms, 3600000) / 60000)
Local $seconds = Int(Mod($ms, 60000) / 1000)
Local $milliseconds = Mod($ms, 1000)
Return StringFormat("%02d:%02d:%02d.%03d", $hours, $minutes, $seconds, $milliseconds)
EndFunc ;==>FormatTime
Func _ReadyCountdownTimer()
Local $RCountHrs = Number(GUICtrlRead($CountHrs))
Local $RCountMin = Number(GUICtrlRead($CountMin))
Local $RCountSec = Number(GUICtrlRead($CountSec))
Local $RCountMil = Number(GUICtrlRead($CountMil))
$g_CountdownTotalMS = ($RCountHrs * 3600000) + ($RCountMin * 60000) + ($RCountSec * 1000) + $RCountMil
$g_CountdownStartTime = TimerInit()
$g_CountdownRunning = True
; Set initial display
Local $Countvalues = StringFormat("%02d:%02d:%02d.%03d", $RCountHrs, $RCountMin, $RCountSec, $RCountMil)
GUICtrlSetData($Countdown, $Countvalues)
EndFunc ;==>_ReadyCountdownTimer
Func _AllBackToStartingPosition()
_ClearAlarm()
$AlarmSet = False
GUICtrlSetState($AlarmOff, $GUI_DISABLE)
GUICtrlSetState($AlarmOn, $GUI_ENABLE)
GUICtrlSetData($StartCheckBox, 'Start')
GUICtrlSetData($StopCheckBox, 'Stop')
GUICtrlSetData($Autocalculation, "00:00:00.000")
GUICtrlSetData($MStartHrs, $sHours, "00")
GUICtrlSetData($MEndHrs, $sHours, "00")
GUICtrlSetData($AlarmHrs, $sHours, "00")
GUICtrlSetData($CountHrs, $sHours, "00")
GUICtrlSetData($MStartMin, $sMinSec, "00")
GUICtrlSetData($MEndMin, $sMinSec, "00")
GUICtrlSetData($AlarmMin, $sMinSec, "00")
GUICtrlSetData($CountMin, $sMinSec, "00")
GUICtrlSetData($MStartSec, $sMinSec, "00")
GUICtrlSetData($MEndSec, $sMinSec, "00")
GUICtrlSetData($AlarmSec, $sMinSec, "00")
GUICtrlSetData($CountSec, $sMinSec, "00")
GUICtrlSetData($MStartMil, $sMillis, "000")
GUICtrlSetData($MEndMil, $sMillis, "000")
GUICtrlSetData($AlarmMil, $sMillis, "000")
GUICtrlSetData($CountMil, $sMillis, "000")
GUICtrlSetState($StartCheckBox, $GUI_UNCHECKED)
GUICtrlSetState($StopCheckBox, $GUI_UNCHECKED)
GUICtrlSetData($MCalResult, "00:00:00.000")
$elapsedBeforeStop = 0
$isRunning = False
$runrunrun = 0
GUICtrlSetData($Stopwatch, "00:00:00.000")
GUICtrlSetState($StopwatchStart, $GUI_ENABLE)
GUICtrlSetState($StopwatchReset, $GUI_DISABLE)
GUICtrlSetState($StopwatchStop, $GUI_DISABLE)
GUICtrlSetState($StopwatchCont, $GUI_DISABLE)
$g_CountdownRunning = False
$g_CountdownRemainingMS = 0
$g_CountdownTotalMS = 0
GUICtrlSetData($Countdown, "00:00:00.000")
GUICtrlSetState($CountStart, $GUI_ENABLE)
GUICtrlSetState($CountReset, $GUI_DISABLE)
GUICtrlSetState($CountStop, $GUI_DISABLE)
GUICtrlSetState($CountCont, $GUI_DISABLE)
EndFunc ;==>_AllBackToStartingPosition
Alles anzeigen
ich habe auch nichts gegen eine 'behebung' von bugs oder hilfestellungen.
ich hatte die befuellung von den dropdownboxen mit arrays probiert, bin
aber daran gescheitert. moeglicherweise liesse sich damit zeit einsparen?
generell find ich es persoenlich dennoch toll wie es geworden ist.
gruss
bankesbusters