找回密码
 加入
搜索
查看: 3146|回复: 11

[AU3基础] 怎么在进度条里显示计时【已解决】

[复制链接]
发表于 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

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





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

我问的比你答的都多

点评

太难了!  发表于 2020-7-30 10:52
发表于 2020-7-22 17:51:11 | 显示全部楼层
进度条需要两个条件,总数和当前值。提问只有当前时间,总数是什么?
 楼主| 发表于 2020-7-22 17:56:54 | 显示全部楼层
afan 发表于 2020-7-22 17:51
进度条需要两个条件,总数和当前值。提问只有当前时间,总数是什么?

你说的总数是指?
发表于 2020-7-22 20:38:04 | 显示全部楼层
itqijian 发表于 2020-7-22 17:56
你说的总数是指?

你认为当前时间的进度应该走到哪个位置?依据的终点是哪里
 楼主| 发表于 2020-7-22 21:41:27 | 显示全部楼层
afan 发表于 2020-7-22 20:38
你认为当前时间的进度应该走到哪个位置?依据的终点是哪里

只要显示进度条运行了多少时间就可以。
发表于 2020-7-23 08:58:47 | 显示全部楼层
当前为 50   
在总数100里,50就是 一半,
在总数150里,50就是3分之一。
发表于 2020-7-23 09:46:31 | 显示全部楼层
把这两段代码放在一起不就是你要的功能吗。。。。
 楼主| 发表于 2020-7-23 09:58:03 | 显示全部楼层
本帖最后由 itqijian 于 2020-7-31 14:21 编辑
guland 发表于 2020-7-23 09:46
把这两段代码放在一起不就是你要的功能吗。。。。

读秒时会闪烁

发表于 2020-7-25 16:45:01 | 显示全部楼层

没感觉这个时间放在进度条上很丑么,建议放在其它地方去
 楼主| 发表于 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[2],$sTime& StringRegExpReplace( GUICtrlRead($aProgress[1]),'(?m)^\S{8}',''))         
                        GUICtrlSetData($aProgress[1],$sTime& StringRegExpReplace( GUICtrlRead($aProgress[1]),'(?m)^\S{8}',''))
                        GUICtrlSetData($aProgress[0],$sTime& StringRegExpReplace( GUICtrlRead($aProgress[0]),'(?m)^\S{8}',''))

                        EndIf
                EndIf
EndFunc   ;==>Timer
请教论坛的大神完成!


您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 10:32 , Processed in 0.107332 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表