itqijian 发表于 2020-7-22 17:37:52

怎么在进度条里显示计时【已解决】

本帖最后由 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

怎么在进度条里面添加计时(显示多少分多少秒) ?





afan 发表于 2020-7-22 22:14:53

itqijian 发表于 2020-7-22 21:41
只要显示进度条运行了多少时间就可以。

我问的比你答的都多

afan 发表于 2020-7-22 17:51:11

进度条需要两个条件,总数和当前值。提问只有当前时间,总数是什么?

itqijian 发表于 2020-7-22 17:56:54

afan 发表于 2020-7-22 17:51
进度条需要两个条件,总数和当前值。提问只有当前时间,总数是什么?

你说的总数是指?

afan 发表于 2020-7-22 20:38:04

itqijian 发表于 2020-7-22 17:56
你说的总数是指?

你认为当前时间的进度应该走到哪个位置?依据的终点是哪里

itqijian 发表于 2020-7-22 21:41:27

afan 发表于 2020-7-22 20:38
你认为当前时间的进度应该走到哪个位置?依据的终点是哪里

只要显示进度条运行了多少时间就可以。

862228699 发表于 2020-7-23 08:58:47

当前为 50   
在总数100里,50就是 一半,
在总数150里,50就是3分之一。

guland 发表于 2020-7-23 09:46:31

把这两段代码放在一起不就是你要的功能吗。。。。

itqijian 发表于 2020-7-23 09:58:03

本帖最后由 itqijian 于 2020-7-31 14:21 编辑

guland 发表于 2020-7-23 09:46
把这两段代码放在一起不就是你要的功能吗。。。。
读秒时会闪烁

邪恶海盗 发表于 2020-7-25 16:45:01

itqijian 发表于 2020-7-23 09:58
读秒时会闪烁

没感觉这个时间放在进度条上很丑么,建议放在其它地方去

itqijian 发表于 2020-7-31 14:24:55

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]
查看完整版本: 怎么在进度条里显示计时【已解决】