<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18463&amp;type=atom" />
	<updated>2025-07-14T20:07:28Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=18463</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162546#p162546" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, все именно так! Большущее спасибо за помощь! Теперь пойду разбираться в коде <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[bubblegum]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=45015</uri>
			</author>
			<updated>2025-07-14T20:07:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162546#p162546</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162545#p162545" />
			<content type="html"><![CDATA[<p>Наверно, такое имели в виду:<br /></p><div class="codebox"><pre><code>#Requires AutoHotkey v2

wnd := Gui()
wnd.OnEvent(&#039;Close&#039; , (*) =&gt; ExitApp())
wnd.OnEvent(&#039;Escape&#039;, (*) =&gt; ExitApp())
wnd.SetFont(&#039;s12&#039;)
wnd.txts := []
wnd.selIdx := 1
Loop 3 {
    txt := wnd.Add(&#039;Text&#039;, &#039;xm yp+30 w300 h30 center&#039;, &#039;Бубль гум&#039; . (A_Index == 1 ? &#039; 1&#039; : &#039;!&#039;))
    txt.OnEvent(&#039;Click&#039;, Select.Bind(A_Index, 1))
    wnd.txts.Push(txt)
}
wnd.txts[1].SetFont(&#039;s12 cBlue&#039;)
wnd.Show(&#039;w400 h400&#039;)

Select(idx, doAction, txt, *) {
    for ctrl in wnd.txts {
        ctrl.SetFont(&#039;s12 cDefault&#039;)
        ctrl.Text := &#039;Бубль гум!&#039;
    }
    wnd.selIdx := idx
    txt.Text := &#039;Бубль гум &#039; . idx
    if doAction {
        txt.SetFont(&#039;s20 cRed&#039;)
        SetTimer Action.Bind(idx, txt), -333
        Sleep(333)
    }
    txt.SetFont(&#039;s12 cBlue&#039;)
}

MoveSel(step) {
    total := wnd.txts.Length
    wnd.selIdx := Mod(wnd.selIdx - 1 + step + total, total) + 1
    Select(wnd.selIdx, 0, wnd.txts[wnd.selIdx])
}

Action(idx, ctrl) {
    MsgBox &#039;Индекс: &#039; . idx &#039;`nТекст: &#039; . ctrl.Text
}

#HotIf WinActive(wnd)
Up::   MoveSel(-1)
Down:: MoveSel( 1)

Enter:: Select(wnd.selIdx, 1, wnd.txts[wnd.selIdx])
#HotIf</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-07-14T19:55:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162545#p162545</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162544#p162544" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, не в этом дело. Попробуйте запустить скрипт для v1 и все будет видно. Я не знаю, как все это объяснить.</p>]]></content>
			<author>
				<name><![CDATA[bubblegum]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=45015</uri>
			</author>
			<updated>2025-07-14T19:22:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162544#p162544</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162543#p162543" />
			<content type="html"><![CDATA[<p>А в чём принципиальная разница? В исходном коде первый элемент не выделен, так просто выделите его сразу, и вместо <em>wnd.selIdx := 0</em> напишите <em>wnd.selIdx := 1</em>.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-07-14T19:15:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162543#p162543</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162542#p162542" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, большое спасибо за помощь! Замечательно, теперь многое стало понятно, но это не совсем то, как я задумывал... я плохо умею объяснять, мои извинения.<br />Попробую так: у меня есть аналогичный шаблон gui для ahk v1, может так будет лучше объяснить. Хотелось бы нечто такое же для ahk v2:<br /></p><div class="codebox"><pre><code>
#NoEnv
#SingleInstance force
SetBatchLines -1
SendMode Input

TotalPoints := 3
ActPoint := 1

FontSize := 16
FontSize_Act := FontSize+3
FontSize_Ent := FontSize-3
TxtPos := FontSize_Act*2

Gui Color, 000000
Gui Font, % &quot;cYellow s&quot; FontSize &quot; Bold&quot;, Segoe Script
Gui Add, Text, % &quot;w400 h30 x0 y40 Center vMenuPoint1 gPoint1&quot;, Point 1
Gui Add, Text, % &quot;w400 h30 yp+&quot; TxtPos &quot; Center vMenuPoint2 gPoint2&quot;, Point 2
Gui Add, Text, % &quot;w400 h30 yp+&quot; TxtPos &quot; Center vMenuPoint3 gPoint3&quot;, Выход
SetFont(&quot;cGreen s&quot; FontSize_Act, &quot;MenuPoint&quot; ActPoint)
Gui Show, w400 h200, Test
Return

Point1:
Point2:
Point3:

If (!PressEnt){
	SetFont(&quot;cYellow s&quot; FontSize, &quot;MenuPoint&quot; ActPoint)
	ActPoint := SubStr(A_GuiControl, 0)
	SetFont(&quot;cGreen s&quot; FontSize_Act, &quot;MenuPoint&quot; ActPoint)
	}
	
PressEnt := &quot;&quot;
SetFont(&quot;cRed s&quot; FontSize_Ent, &quot;MenuPoint&quot; ActPoint)
Sleep 333
SetFont(&quot;cGreen s&quot; FontSize_Act, &quot;MenuPoint&quot; ActPoint)

If (A_ThisLabel = &quot;Point1&quot;){
	GoSub Action1
	}
Else If (A_ThisLabel = &quot;Point2&quot;){
	GoSub Action2
	}
Else If (A_ThisLabel = &quot;Point3&quot;){
	GoSub ExitProg
	}
	
#IfWinActive Test
Up::
Down::
	SetFont(&quot;cYellow s&quot; FontSize, &quot;MenuPoint&quot; ActPoint)
	ActPoint += (A_ThisHotkey = &quot;Up&quot; ? -1 : 1)
	ActPoint := (ActPoint &gt; TotalPoints ? 1 : ActPoint = 0 ? TotalPoints : ActPoint)
	SetFont(&quot;cGreen s&quot; FontSize_Act, &quot;MenuPoint&quot; ActPoint)
Return

Enter::
NumpadEnter::
	PressEnt := 1
	GoTo % &quot;Point&quot; ActPoint
Return

SetFont(Options, Control){
	Gui Font, % Options
	GuiControl Font, % Control
	}
	
Action1:
	MsgBox Первый
Return

Action2:
	MsgBox Второй
Return

ExitProg:
Gui Destroy
ExitApp
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[bubblegum]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=45015</uri>
			</author>
			<updated>2025-07-14T18:59:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162542#p162542</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162541#p162541" />
			<content type="html"><![CDATA[<p>Попробуйте так:<br /></p><div class="codebox"><pre><code>#Requires AutoHotkey v2

wnd := Gui()
wnd.OnEvent(&#039;Close&#039; , (*) =&gt; ExitApp())
wnd.OnEvent(&#039;Escape&#039;, (*) =&gt; ExitApp())
wnd.SetFont(&#039;s12&#039;)
wnd.txts := []
wnd.selIdx := 0
Loop 3 {
    txt := wnd.Add(&#039;Text&#039;, &#039;xm yp+30 w300 h30 center&#039;, &#039;Бубль гум!&#039;)
    txt.OnEvent(&#039;Click&#039;, Select.Bind(A_Index))
    wnd.txts.Push(txt)
}
wnd.Show(&#039;w400 h400&#039;)

Select(idx, txt, *) {
    for ctrl in wnd.txts {
        ctrl.SetFont(&#039;s12 cDefault&#039;)
    }
    wnd.selIdx := idx
    txt.Text := &#039;Бубль гум &#039; . idx
    txt.SetFont(&#039;s20 cRed&#039;)
    Sleep(333)
    txt.SetFont(&#039;s12 cBlue&#039;)
}

MoveSel(step) {
    total := wnd.txts.Length
    if !wnd.selIdx &amp;&amp; step = -1 {
        wnd.selIdx := total + 1
    }
    wnd.selIdx := Mod(wnd.selIdx - 1 + step + total, total) + 1
    Select(wnd.selIdx, wnd.txts[wnd.selIdx])
}

#HotIf WinActive(wnd)
Up::   MoveSel(-1)
Down:: MoveSel( 1)

Enter:: {
    if !wnd.selIdx
        return
    MsgBox &#039;Индекс: &#039; . wnd.selIdx &#039;`nТекст: &#039; . wnd.txts[wnd.selIdx].Text
}
#HotIf</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-07-14T15:27:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162541#p162541</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162540#p162540" />
			<content type="html"><![CDATA[<p>Здравствуйте всем.<br />Пытаюсь сделать простой gui на ahk v2, где по клику на текст (назовем его &quot;пункт меню&quot;) будет выполняться какое-нибудь действие. Также нужно сделать навигацию по этим пунктам меню с помощью клавиш Up:: и Down::, а также выполнять действие на этом пункте по нажатию Enter:: или NumpadEnter::. При переходе на пункт меню, его текст gui должен изменить цвет и размер шрифта - увеличить, а затем вернуть свои первоначальные настройки в случае выбора другого пункта. Не знаю, как все это написать, чтобы было понятно. Вот мой скрипт, который пытаюсь сделать. Может задумка станет немного понятнее.<br />Заранее благодарю за помощь.<br /></p><div class="codebox"><pre><code>
#Requires AutoHotkey v2.0+

global txt1, txt2, txt3

mainGui := Gui(, &quot;GUI title&quot;)
mainGui.OnEvent(&quot;close&quot;,closeGui)
mainGui.OnEvent(&quot;escape&quot;,closeGui)
mainGui.SetFont(&quot;s12&quot;)
Loop 3 {
	index := A_Index
	txt%index% := mainGui.Add(&quot;Text&quot;, &quot;xp yp30 w300 h30 center&quot;, &quot;Это ж Бубль Гум!&quot;)
	txt%index%.OnEvent(&quot;Click&quot;, Point%index%)
}
mainGui.Show(&quot;w400 h400&quot;)

Up::
Down::
Point1(txtCtrl, *){
	txtCtrl.Text := &quot;Бубль Гум 1&quot;
	SetFontOpt()
return
}

Point2(txtCtrl, *){
	txtCtrl.Text := &quot;Бубль Гум 2&quot;
	SetFontOpt()
return
}

Point3(txtCtrl, *){
	txtCtrl.Text := &quot;Бубль Гум 3&quot;
	SetFontOpt()
return
}

SetFontOpt(){
	txt%index%.SetFont(&quot;s20 cRed&quot;, &quot;&quot;)
	Sleep(333)
	txt%index%.SetFont(&quot;s12 cBlue&quot;, &quot;&quot;)
return
}

closeGui(*){
    ExitApp()
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[bubblegum]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=45015</uri>
			</author>
			<updated>2025-07-14T12:23:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162540#p162540</id>
		</entry>
</feed>
