怎么在进度条里显示计时【已解决】
本帖最后由 itqijian 于 2020-7-31 14:25 编辑#include <Date.au3>
GUICreate('运行时间实时显示', 300, 100)
GUICtrlCreateLabel('本程序已运行:', 90, 70, 100, 15)
Dim $tl = GUICtrlCreateLabel('00天,00时,00分,00秒', 180, 70, 150, 15)
GUISetState()
Dim $timer = TimerInit(), $Day = 0
AdlibRegister('Timer', 500)
While 1
Switch GUIGetMsg()
Case -3
Exit
EndSwitch
WEnd
Func Timer()
Local $Secs, $Mins, $Hour, $Time, $ticks, $sTime
$ticks = Int(TimerDiff($timer)) * 5000 ;这里*5000是为了测试,将时间提速5000倍
If $ticks >= 86400000 Then
$Day += 1
$timer = TimerInit()
$ticks = 0
EndIf
_TicksToTime($ticks, $Hour, $Mins, $Secs)
$Time = StringFormat('%02s天,%02s时,%02s分,%02s秒', $Day, $Hour, $Mins, $Secs)
If $sTime <> $Time Then GUICtrlSetData($tl, $Time)
$sTime = $Time
EndFunc ;==>Timer
#include '_LabelProgress.au3'
$Form1 = GUICreate('反色文字Label进度条 @afan', 380, 80)
GUISetState()
$aProgress = _LabelProgress_Create(20, 20, 300, 30, ' 进度反色文字测试')
$i = 1
Do
Sleep(200)
$i += Random(0, 8, 1) ;随机进度增值
_LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 30
Sleep(1000)
_LabelProgress_Off($aProgress)
$aProgress = _LabelProgress_Create(20, 20, 300, 30, ' 进度反色文字测试')
$i =31
Do
Sleep(200)
$i += Random(0, 8, 1) ;随机进度增值
_LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 60
Sleep(1000)
_LabelProgress_Off($aProgress)
$aProgress = _LabelProgress_Create(20, 20, 300, 30, ' 进度反色文字测试')
$i =61
Do
Sleep(200)
$i += Random(0, 8, 1) ;随机进度增值
_LabelProgress_Set($Form1, $aProgress, $i)
Until $i >= 101
Sleep(1000)
_LabelProgress_Off($aProgress)
Exit
进度条的源码:https://www.autoitx.com/forum.php?mod=viewthread&tid=38023&highlight=%BD%F8%B6%C8%CC%F5
怎么在进度条里面添加计时(显示多少分多少秒) ?
itqijian 发表于 2020-7-22 21:41
只要显示进度条运行了多少时间就可以。
我问的比你答的都多 进度条需要两个条件,总数和当前值。提问只有当前时间,总数是什么? afan 发表于 2020-7-22 17:51
进度条需要两个条件,总数和当前值。提问只有当前时间,总数是什么?
你说的总数是指? itqijian 发表于 2020-7-22 17:56
你说的总数是指?
你认为当前时间的进度应该走到哪个位置?依据的终点是哪里 afan 发表于 2020-7-22 20:38
你认为当前时间的进度应该走到哪个位置?依据的终点是哪里
只要显示进度条运行了多少时间就可以。 当前为 50
在总数100里,50就是 一半,
在总数150里,50就是3分之一。 把这两段代码放在一起不就是你要的功能吗。。。。 本帖最后由 itqijian 于 2020-7-31 14:21 编辑
guland 发表于 2020-7-23 09:46
把这两段代码放在一起不就是你要的功能吗。。。。
读秒时会闪烁
itqijian 发表于 2020-7-23 09:58
读秒时会闪烁
没感觉这个时间放在进度条上很丑么,建议放在其它地方去 Global $sTime='',$timer,$Day=0
Global $aProgress
$timer=TimerInit()
AdlibRegister('Timer',1000)
Func Timer()
Local $Secs, $Mins, $Hour, $Time, $ticks
$ticks = Int(TimerDiff($timer))
If $ticks >= 86400000 Then
$Day += 1
$timer = TimerInit()
$ticks = 0
EndIf
_TicksToTime($ticks, $Hour, $Mins, $Secs)
$Time = StringFormat('%02s:%02s', $Mins, $Secs)
If $sTime <> $Time Then
$sTime = $Time
If UBound($aProgress)>1 Then
GUICtrlSetData($aProgress,$sTime& StringRegExpReplace( GUICtrlRead($aProgress),'(?m)^\S{8}',''))
GUICtrlSetData($aProgress,$sTime& StringRegExpReplace( GUICtrlRead($aProgress),'(?m)^\S{8}',''))
GUICtrlSetData($aProgress,$sTime& StringRegExpReplace( GUICtrlRead($aProgress),'(?m)^\S{8}',''))
EndIf
EndIf
EndFunc ;==>Timer 请教论坛的大神完成!
页:
[1]