ziyaxian 发表于 2009-7-30 16:53:42

倒计时程序,如何使秒小于10后,还显示两位数呢?

本帖最后由 ziyaxian 于 2009-7-30 17:46 编辑

请看下面的程序,当秒小于10后,只显示一位数了,我想当秒小于10时还显示两位数,比如:9时显示09,0时显示00,程序刚运行时显示5:00#include <GUIConstantsEx.au3>

$Form = GUICreate("5分钟倒计时", 280, 230, 195, 125)
GUISetState(@SW_SHOW)


Global $sec = 0
Global $min = 5
#Region ### START Koda GUI section ### Form=
$Label5 = GUICtrlCreateLabel($sec , 125, 50, 200,80)
GUICtrlSetFont(-1, 72, 400, 0, "楷体_GB2312")
$Label6 = GUICtrlCreateLabel($min & ":",55,50,70,80)
GUICtrlSetFont(-1, 72, 400, 0, "楷体_GB2312")
$Button1 = GUICtrlCreateButton("开始", 50, 180, 73, 25, 0)
$Button2 = GUICtrlCreateButton("重新开始", 150, 180, 73, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
      $nMsg = GUIGetMsg()
                Switch $nMsg
                Case -3
                  DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form, "int", 500, "long", 0x00090000)
                  Exit
                                Case $Button1
                                  AdlibEnable("_timer", 1000)
                Case $Button2
                  AdlibDisable()
                  $sec = 0
                  $min = 5                                               
                        GUICtrlSetData($Label5,$sec)
                            GUICtrlSetData($Label6,$min &":")       
      EndSwitch
WEnd

Func _timer()
        If $sec <= 0 Then
                $sec = 60+$sec
                $min -= 1
                EndIf
      $sec -= 1
      GUICtrlSetData($Label5,$sec)
                GUICtrlSetData($Label6,$min &":")
               
EndFunc

ziyaxian 发表于 2009-7-30 17:15:32



再发个图片,上面的5:0 能否显示成 05:00呢?

afan 发表于 2009-7-30 17:25:39

本帖最后由 afan 于 2009-7-30 18:19 编辑

#include <GUIConstantsEx.au3>

$Form = GUICreate("5分钟倒计时", 280, 230, 195, 125)
GUISetState(@SW_SHOW)

Global $sec = 0
Global $min = 5

$Label5 = GUICtrlCreateLabel(StringFormat('%02s', $sec), 145, 50, 90, 80)
GUICtrlSetFont(-1, 72, 400, 0, "楷体_GB2312")
$Label6 = GUICtrlCreateLabel(StringFormat('%02s', $min) & ":", 30, 50, 120, 80)
GUICtrlSetFont(-1, 72, 400, 0, "楷体_GB2312")
$Button1 = GUICtrlCreateButton("开始", 50, 180, 73, 25, 0)
$Button2 = GUICtrlCreateButton("重新开始", 150, 180, 73, 25, 0)
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case - 3
                        DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form, "int", 500, "long", 0x00090000)
                        Exit
                Case $Button1
                        AdlibEnable("_timer", 1000)

                Case $Button2
                        AdlibDisable()
                        $sec = 0
                        $min = 5
                        GUICtrlSetData($Label5, StringFormat('%02s', $sec))
                        GUICtrlSetData($Label6, StringFormat('%02s', $min) & ":")
        EndSwitch
WEnd

Func _timer()
        If $sec = 0 And $min = 0 then
                AdlibDisable()
        Else
                If $sec <= 0 Then
                        $sec = 60 + $sec
                        $min -= 1
                EndIf
                $sec -= 1
                GUICtrlSetData($Label5, StringFormat('%02s', $sec))
                GUICtrlSetData($Label6, StringFormat('%02s', $min) & ":")
        Endif
EndFunc   ;==>_timer

ziyaxian 发表于 2009-7-30 17:45:47

谢谢,正是我想要的,再次感谢

afan 发表于 2009-7-30 18:00:34

本帖最后由 afan 于 2009-7-30 19:24 编辑

顺便改了一下,到00:00 即停止,不再计时。

menfan1 发表于 2009-7-30 19:59:10

AdlibEnable改为Adlibregister,dlibDisable改为dlibunregister--新版本
页: [1]
查看完整版本: 倒计时程序,如何使秒小于10后,还显示两位数呢?