Liebe Autoit Freunde
War lange nicht mehr im Forum Aktiev (zeitprobleme)
doch ich brauche mal wieder eure hilfe
ich würde gerne eine stoppuhr erstellen
die zeit vorwärts zählen kann (1sek,2sek usw)
und einmal genau das gegenteil also 10sek 9sek usw
ich habe schon eine leichte vorstellung wie man das machen könnte
doch leider ist das nur ein bruchteil
bitte helft mir
danke schon mal
BYBY
Tooltip Uhr
-
- [ offen ]
-
manny89 -
12. August 2008 um 13:53 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Hatte ich schon mal gemacht. Guckst du: CountDown
Edit: bzw. direkt Stoppuhr hatte ich auch mal:
Spoiler anzeigen
[autoit]#include<EditConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<GUIConstantsEx.au3>
Global $start, $UsedTime, $diff_Alt = 0
Global $SetTime = False, $Break = False, $Pause = False, $Run = True
Global $colBG = 0x0000FF, $colFont = 0xFFEA00$GUI = GUICreate('Stoppuhr', 400, 100, -1, -1)
[/autoit] [autoit][/autoit] [autoit]
$Time = GUICtrlCreateInput('00:00:00,000', 100, 20, 200, 20, BitOR($ES_CENTER,$ES_READONLY))
GUICtrlSetBkColor(-1, $colBG)
GUICtrlSetColor(-1, $colFont)
$bStart = GUICtrlCreateButton('Start', 40, 60, 80, 20)
$bBreak = GUICtrlCreateButton('Unterbrechen', 160, 60, 80, 20)
GUICtrlSetState(-1, $GUI_DISABLE)
$bPause = GUICtrlCreateButton('Pause', 280, 60, 80, 20)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()While True
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
If $SetTime Then $UsedTime = SetTime()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $bStart ; Start/Stop Messung absolut
$Run = Not $Run
If $Run Then
$SetTime = False
SetTime()
GUICtrlSetData($bStart, 'Start')
GUICtrlSetState($bBreak, $GUI_DISABLE)
GUICtrlSetState($bPause, $GUI_DISABLE)
Else
$SetTime = True
$start = TimerInit()
GUICtrlSetData($bStart, 'Stop')
GUICtrlSetState($bBreak, $GUI_ENABLE)
GUICtrlSetState($bPause, $GUI_ENABLE)
EndIf
Case $bBreak ; nur Anzeige wird angehalten (z.B. Rundenmessung)
$Break = Not $Break
If $Break Then
$SetTime = False
GUICtrlSetData($bBreak, 'Fortsetzen')
GUICtrlSetState($bPause, $GUI_DISABLE)
Else
$SetTime = True
GUICtrlSetData($bBreak, 'Unterbrechen')
GUICtrlSetState($bPause, $GUI_ENABLE)
EndIf
Case $bPause ; Messung wird angehalten (Additionsmessung)
$Pause = Not $Pause
If $Pause Then
$diff_Alt = $UsedTime ; abgelaufene Zeit aufaddieren
$SetTime = False
GUICtrlSetData($bPause, 'Weiter')
GUICtrlSetState($bBreak, $GUI_DISABLE)
Else
$SetTime = True
$start = TimerInit() ; Zeitmessung neu initialisieren
GUICtrlSetData($bPause, 'Pause')
GUICtrlSetState($bBreak, $GUI_ENABLE)
EndIf
EndSwitch
WEndFunc SetTime()
[/autoit]
Local $diff = TimerDiff($start)/1000 + $diff_Alt
Local $hour = 0
Local $min = 0
Local $sec = Floor($diff)
Local $rest = ($diff-$sec)*1000
Local $secShow, $minShow, $hourShow
If $sec > 59 Then
$min = Floor($sec/60)
$secShow = Mod($sec, 60)
ElseIf $sec > 3599 Then ; ???? testen
$hourShow = Mod(Mod($sec,3600),60)
$minShow = Floor(Mod($sec,3600)/60)
$secShow = Floor($sec/3600)
Else
$secShow = $sec
$minShow = $min
$hourShow = $hour
EndIf
GUICtrlSetData($Time, StringFormat('%02u', $hourShow) & ':' & StringFormat('%02u', $minShow) & ':' & StringFormat('%02u', $secShow) & ',' & StringFormat('%03u', $rest))
Return $diff ; gibt abgelaufene Zeit als absolute Differenz zurück
EndFunc