<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Часы, таймер, секундомер]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=12931</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12931&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Часы, таймер, секундомер».]]></description>
		<lastBuildDate>Tue, 29 Jan 2019 11:53:43 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Часы, таймер, секундомер]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=131726#p131726</link>
			<description><![CDATA[<p>2-я версия.<br /></p><ul><li><p>Отсчёт времени не останавливается при показе меню и паузе.</p></li><li><p>Можно изменить размер и все остальные опции (Change).</p></li><li><p>Изменить только цвета (ChangeColor).</p></li><li><p>Опционально добавил ввод цифровыми клавишами. Backspace, Delete, NumpadDot удаляют последний введённый.<br />	Работает только с оригинальным названием класса.</p></li></ul><p>Совместимо с примерами выше.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Demo</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1

Gui, New, +HWNDhMain -DPIScale
Gui, Color, F9D886

Clock1 := New ClockGui(hMain, &quot;Name Clock1|w 200|h 50|db 20|bckgitem F9D886|coloritem 5671BD|Font s40|FontName Comic Sans MS|Colon Flash&quot;)
Clock1.SetTime()
Clock1.Show()
Clock1.StartClock()

Demo := New ClockGui(hMain, &quot;Sec|Name TestTimer|Pos x150 y+100|w 400|h 120|ds 1|db 14|bckgmain F9D886|Font s80&quot;)
Demo.SetTime(&quot;00:00:00&quot;)
Demo.Show()
Demo.NumInput(&quot;DemoInputRule&quot;) ; без параметра отключит ввод

Gui, Add, Button, xp90 y+20 gTimerStart, Запустить таймер
Gui, Add, Button, x+20 yp gTimerStop, Остановить

Gui, Show, w700 
Sleep 2000
Clock1.Change(hMain, &quot;Sec|Name Clock1|bckgmain F9D886|Pos x50 y50|w 600|h 66|db 30|ds 6|bckgitem ffffff|coloritem 000000|Font s50|Colon Flash 100&quot;)
Sleep 2000
  ;	ChangeColor(BckgMain, BckgItem, ColorItem)
  ;	Любой из параметров может быть пустым, в таком случае этот цвет останется прежним.
Clock1.ChangeColor(&quot;0000ff&quot;, &quot;ff0000&quot;, &quot;00ff00&quot;)
Return

esc::exitapp

DemoInputRule() {
	Global hMain
	Return WinActive(&quot;ahk_id&quot; hMain)
}

TimerStart:
	If Demo.Block()
		Return
	BckgItem := Demo.BckgItem
	If !Demo.IsTimeInDay() || Demo.IsTimeEmpty()
	{
		Demo.ChangeColor(&quot;&quot;, &quot;ff0000&quot;, &quot;&quot;)
		Sleep 500
		Demo.ChangeColor(&quot;&quot;, BckgItem, &quot;&quot;)
		Return
	}
	Demo.NumInput()
	Demo.StartTimer(&quot;EndTimer&quot;) 
	Demo.ChangeColor(&quot;&quot;, &quot;607CCA&quot;, &quot;&quot;)
	Sleep 300
	Demo.ChangeColor(&quot;&quot;, BckgItem, &quot;&quot;)
	Return

TimerStop:
	Demo.Stop(1)
	Demo.Block(0)
	Demo.NumInput(&quot;DemoInputRule&quot;)
	Return
	
EndTimer(This) { 
	BckgItem := This.BckgItem
	This.ChangeColor(&quot;&quot;, &quot;00ff00&quot;, &quot;&quot;)
	Sleep 1000
	This.ChangeColor(&quot;&quot;, BckgItem, &quot;&quot;)
	(!This.Loop &amp;&amp; This.Block(0))
	This.NumInput(&quot;DemoInputRule&quot;)
}
</code></pre></div></div></div><br /><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;OnStep</div><div class="fancy_spoiler"><p>Свойство &quot;OnStep&quot; - указывается имя функции обработчика изменения времени на табло. В параметре принимается экземпляр.<br /></p><div class="codebox"><pre><code>
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1

Gui, +HWNDhMain
Gui, Color, F9D886

Clock := New ClockGui(hMain, &quot;Sec|w 60|h 30|db 6|bckgitem F9D886|coloritem 5671BD|Font Bold|Colon Flash&quot;)
Clock.StartClock()
Clock.Show()

Timer := New ClockGui(hMain, &quot;Sec|pos xm|Name Timer|w 400|h 120|ds 1|db 14|bckgmain 444444|Font s80|Colon Flash&quot;)
Timer.SetTime(Timer.MathTime(&quot;&quot;, &quot;+&quot;, &quot;00:01&quot;)) ; прибавляем 1 минуту к текущему времени
Timer.OnStep := &quot;OnStep&quot;
Timer.Show() 

Demo := New ClockGui(hMain, &quot;Sec|ds 1|db 14|bckgmain F9D886|bckgitem F9D886|Font s80|Colon Flash&quot;)
Demo.Block(1)
Demo.Show()

OnStep(Timer)

Gui, Show
Return

OnStep(This) {
	Global Demo 
	Demo.Stop(1)
	Demo.StartTimerDay(&quot;&quot;, This.Get(), 1)
}  

GuiClose:
	ExitApp
</code></pre></div></div></div><br /><br /><h5><a href="https://raw.githubusercontent.com/serzh82saratov/ClockGui/master/v2/ClockGui.ahk">Class ClockGui.</a></h5>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 29 Jan 2019 11:53:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=131726#p131726</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Часы, таймер, секундомер]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118563#p118563</link>
			<description><![CDATA[<p>Класс позволяет добавлять контролы в виде табло часов. Встроены таймеры для часов, таймера и секундомера. Также с помощью контрола пользователь может выставить нужное ему время.</p><p>Ввод времени - LButton, RButton, WheelUp, WheelDown. <br />MButton - сброс на 00<br />Ввод доступен в нижнем табло в Demo.</p><br /><h5><a href="https://raw.githubusercontent.com/serzh82saratov/ClockGui/master/ClockGui.ahk">Class ClockGui.</a></h5><br /><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Demo.</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
#SingleInstance Force
#Persistent
#NoEnv
ListLines Off
SetBatchLines -1

Gui, +HWNDhMain -DPIScale
Gui, Color, F9D886


Timer := New ClockGui(hMain, &quot;Sec|Name MyTimer|w 400|h 120|ds 1|db 16|bckgmain F9D886|Font s80 q4|Colon&quot;)
Timer.SetTime(&quot;10:00:04&quot;)  
Timer.StartTimer()
Timer.Show()

Watch := New ClockGui(hMain, &quot;Pos xp y+10|Sec|Name MyWatch|w 400|h 120|ds 1|db 10|bckgmain F9D886|bckgitem FFFFFF|coloritem F9D886|Font s80 q4&quot;)
Watch.SetTime(&quot;23:59:56&quot;)
Watch.StartWatch(, 1) 
Watch.Show()

Clock := New ClockGui(hMain, &quot;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&quot;)
Clock.StartClock()
Clock.Show()

Clock2 := New ClockGui(hMain, &quot;Pos xs+120 y+10|Sec|w 160|h 30|db 6|bckgitem F9D886|coloritem 010101|Font Bold s20 q4|Colon Flash&quot;)
Clock2.StartClock()
Clock2.Show()

TestTimer := New ClockGui(hMain, &quot;Pos xs y+10|Sec|Name TestTimer|w 400|h 120|ds 1|db 14|bckgmain 555555|Font s80 q4|Colon Flash 300&quot;)
TestTimer.SetTime(&quot;00:00:03&quot;)
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(&quot;EndTimer&quot;)
	Return

TimerStop:
	TestTimer.Stop(1)
	TestTimer.Block(0)
	Return

TimerReset:
	Gosub, TimerStop
	TestTimer.SetTime(&quot;00:00:03&quot;)
	Return

EndTimer(This) {
	MsgBox % This.Name &quot;`nВремя вышло&quot;
	(!This.Loop &amp;&amp; This.Block(0))
}

GuiClose:
	ExitApp
</code></pre></div></div></div><p><span class="postimg"><img src="https://raw.githubusercontent.com/serzh82saratov/ClockGui/master/ClockGui.ahk.png" alt="https://raw.githubusercontent.com/serzh82saratov/ClockGui/master/ClockGui.ahk.png" /></span></p><br /><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Запуск секундомера и таймера относительно времени суток.</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1

CheckTime := ClockGui.MathTime(&quot;&quot;, &quot;+&quot;, &quot;00:00:03&quot;)   ;	прибавляем к текущему времени три секунды. это будет стартовым временем суток таймера и секундомера

Gui, +HWNDhMain
Gui, Color, F9D886
TestTimer := New ClockGui(hMain, &quot;Sec|Name Timer1|w 400|h 120|ds 1|db 10|bckgmain F9D886|Font s80&quot;)
TestTimer.Show()
;	1 - указываем функцию обработчик при наступлении стартового времени. Можно оставить пустым - &quot;&quot;
;	2 - стартовое время. Если пусто, то текущее время. Если &quot;User&quot; то будет взято время установленное в TestTimer вручную
;	3 - если последний параметр правда, то при наступлении стартового времени отсчёт продолжается на следующие сутки
TestTimer.StartTimerDay(&quot;EndTimer&quot; , CheckTime, 1)

Clock := New ClockGui(hMain, &quot;Sec|w 400|h 120|db 20|bckgmain F9D886|bckgitem C0C0C0|coloritem 5671BD|Font s80|Colon Flash&quot;)
Clock.Show()
Clock.StartClock()

Watch := New ClockGui(hMain, &quot;Sec|Name Watch1|w 400|h 120|ds 1|db 10|bckgmain F9D886|bckgitem FFFFFF|coloritem F9D886|Font s80&quot;)
Watch.Show()
Watch.StartWatchDay(&quot;EndTimer&quot;, CheckTime, 1)

Gui, Show
Return

EndTimer(This) {
	MsgBox % This.Name &quot; - контрольное время &quot; This.CheckDate &quot; достигнуто&quot;
}

GuiClose:
	ExitApp
</code></pre></div></div></div><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Выставляем время суток, запускаем цикличный таймер до указанного времени.</div><div class="fancy_spoiler"><p>Более наглядно в след. посте пример &quot;OnStep&quot;.<br /></p><div class="codebox"><pre><code>
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1

Gui, +HWNDhMain
Gui, Color, F9D886

Clock := New ClockGui(hMain, &quot;Sec|w 60|h 30|db 6|bckgitem F9D886|coloritem 5671BD|Font Bold|Colon Flash&quot;)
Clock.StartClock()
Clock.Show()

Demo := New ClockGui(hMain, &quot;Sec|pos xp+300|w 60|h 30|db 6|bckgitem F9D886|coloritem ff0000|Font Bold|Colon Flash&quot;)
Demo.Block(1)

Timer := New ClockGui(hMain, &quot;Sec|pos xm|Name Timer|w 400|h 120|ds 1|db 14|bckgmain 444444|Font s80|Colon Flash&quot;)
Timer.SetTime(Timer.MathTime(&quot;&quot;, &quot;+&quot;, &quot;00:01&quot;)) ; прибавляем 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(&quot;EndTimer&quot;, &quot;User&quot;, 1)
	Demo.Show()
	Return
	
TimerReset:
	Timer.Stop(1)
	Timer.SetTime(Timer.MathTime(&quot;&quot;, &quot;+&quot;, &quot;00:01&quot;))
	Timer.Block(0)
	Demo.Show(0)
	Return
	
EndTimer(This) {
	MsgBox % This.Name &quot; - контрольное время &quot; This.CheckDate &quot; достигнуто&quot;
}

GuiClose:
	ExitApp
</code></pre></div></div></div><br /><p><span class="postimg"><img src="https://raw.githubusercontent.com/serzh82saratov/ClockGui/master/Таймер.png" alt="https://raw.githubusercontent.com/serzh82saratov/ClockGui/master/Таймер.png" /></span></p><br /><h5><a href="https://raw.githubusercontent.com/serzh82saratov/ClockGui/master/alarm%20timer.ahk">Таймер с мелодией</a></h5><br /><br /><h5><a href="https://raw.githubusercontent.com/serzh82saratov/ClockGui/master/ClockGui_mini.ahk">Укороченный вариант класса с примером, только для вывода часов.</a></h5><br /><br /><h5><a href="http://forum.script-coding.com/viewtopic.php?id=12932">Тема для обсуждения.</a></h5><br /><br /><p>3:30 11.07.2018 - добавлено относительное позиционирование</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 19 Aug 2017 15:36:06 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118563#p118563</guid>
		</item>
	</channel>
</rss>
