Тема: AHK: Часы, таймер, секундомер
Класс позволяет добавлять контролы в виде табло часов. Встроены таймеры для часов, таймера и секундомера. Также с помощью контрола пользователь может выставить нужное ему время.
Ввод времени - LButton, RButton, WheelUp, WheelDown.
MButton - сброс на 00
Ввод доступен в нижнем табло в Demo.
Class ClockGui.
#SingleInstance Force
#Persistent
#NoEnv
ListLines Off
SetBatchLines -1
Gui, +HWNDhMain -DPIScale
Gui, Color, F9D886
Timer := New ClockGui(hMain, "Sec|Name MyTimer|w 400|h 120|ds 1|db 16|bckgmain F9D886|Font s80 q4|Colon")
Timer.SetTime("10:00:04")
Timer.StartTimer()
Timer.Show()
Watch := New ClockGui(hMain, "Pos xp y+10|Sec|Name MyWatch|w 400|h 120|ds 1|db 10|bckgmain F9D886|bckgitem FFFFFF|coloritem F9D886|Font s80 q4")
Watch.SetTime("23:59:56")
Watch.StartWatch(, 1)
Watch.Show()
Clock := New ClockGui(hMain, "Pos xp y+10|Section|w 400|h 120|db 20|bckgitem C0C0C0|coloritem 5671BD|Font s90 q4|FontName Comic Sans MS|Colon Flash 100")
Clock.StartClock()
Clock.Show()
Clock2 := New ClockGui(hMain, "Pos xs+120 y+10|Sec|w 160|h 30|db 6|bckgitem F9D886|coloritem 010101|Font Bold s20 q4|Colon Flash")
Clock2.StartClock()
Clock2.Show()
TestTimer := New ClockGui(hMain, "Pos xs y+10|Sec|Name TestTimer|w 400|h 120|ds 1|db 14|bckgmain 555555|Font s80 q4|Colon Flash 300")
TestTimer.SetTime("00:00:03")
TestTimer.Show()
Gui, Add, Button, xp60 y+20 gTimerStart, Запустить таймер
Gui, Add, Button, x+20 yp gTimerStop, Остановить
Gui, Add, Button, x+20 yp gTimerReset, Сбросить
Gui, Show
Return
TimerStart:
TestTimer.StartTimer("EndTimer")
Return
TimerStop:
TestTimer.Stop(1)
TestTimer.Block(0)
Return
TimerReset:
Gosub, TimerStop
TestTimer.SetTime("00:00:03")
Return
EndTimer(This) {
MsgBox % This.Name "`nВремя вышло"
(!This.Loop && This.Block(0))
}
GuiClose:
ExitApp
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1
CheckTime := ClockGui.MathTime("", "+", "00:00:03") ; прибавляем к текущему времени три секунды. это будет стартовым временем суток таймера и секундомера
Gui, +HWNDhMain
Gui, Color, F9D886
TestTimer := New ClockGui(hMain, "Sec|Name Timer1|w 400|h 120|ds 1|db 10|bckgmain F9D886|Font s80")
TestTimer.Show()
; 1 - указываем функцию обработчик при наступлении стартового времени. Можно оставить пустым - ""
; 2 - стартовое время. Если пусто, то текущее время. Если "User" то будет взято время установленное в TestTimer вручную
; 3 - если последний параметр правда, то при наступлении стартового времени отсчёт продолжается на следующие сутки
TestTimer.StartTimerDay("EndTimer" , CheckTime, 1)
Clock := New ClockGui(hMain, "Sec|w 400|h 120|db 20|bckgmain F9D886|bckgitem C0C0C0|coloritem 5671BD|Font s80|Colon Flash")
Clock.Show()
Clock.StartClock()
Watch := New ClockGui(hMain, "Sec|Name Watch1|w 400|h 120|ds 1|db 10|bckgmain F9D886|bckgitem FFFFFF|coloritem F9D886|Font s80")
Watch.Show()
Watch.StartWatchDay("EndTimer", CheckTime, 1)
Gui, Show
Return
EndTimer(This) {
MsgBox % This.Name " - контрольное время " This.CheckDate " достигнуто"
}
GuiClose:
ExitApp
Более наглядно в след. посте пример "OnStep".
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1
Gui, +HWNDhMain
Gui, Color, F9D886
Clock := New ClockGui(hMain, "Sec|w 60|h 30|db 6|bckgitem F9D886|coloritem 5671BD|Font Bold|Colon Flash")
Clock.StartClock()
Clock.Show()
Demo := New ClockGui(hMain, "Sec|pos xp+300|w 60|h 30|db 6|bckgitem F9D886|coloritem ff0000|Font Bold|Colon Flash")
Demo.Block(1)
Timer := New ClockGui(hMain, "Sec|pos xm|Name Timer|w 400|h 120|ds 1|db 14|bckgmain 444444|Font s80|Colon Flash")
Timer.SetTime(Timer.MathTime("", "+", "00:01")) ; прибавляем 1 минуту к текущему времени
Timer.Show()
Gui, Add, Button, xp115 y+10 gTimerStart, Запустить таймер
Gui, Add, Button, x+20 yp gTimerReset, Сброс
Gui, Show
Return
TimerStart:
Demo.SetTime(Timer.Get())
Timer.StartTimerDay("EndTimer", "User", 1)
Demo.Show()
Return
TimerReset:
Timer.Stop(1)
Timer.SetTime(Timer.MathTime("", "+", "00:01"))
Timer.Block(0)
Demo.Show(0)
Return
EndTimer(This) {
MsgBox % This.Name " - контрольное время " This.CheckDate " достигнуто"
}
GuiClose:
ExitApp
Таймер с мелодией
Укороченный вариант класса с примером, только для вывода часов.
Тема для обсуждения.
3:30 11.07.2018 - добавлено относительное позиционирование
Win10x64 AhkSpy, Hotkey, ClockGui