<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=18463</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18463&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта».]]></description>
		<lastBuildDate>Mon, 14 Jul 2025 20:07:28 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162546#p162546</link>
			<description><![CDATA[<p><strong>teadrinker</strong>, все именно так! Большущее спасибо за помощь! Теперь пойду разбираться в коде <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (bubblegum)]]></author>
			<pubDate>Mon, 14 Jul 2025 20:07:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162546#p162546</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162545#p162545</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 14 Jul 2025 19:55:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162545#p162545</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162544#p162544</link>
			<description><![CDATA[<p><strong>teadrinker</strong>, не в этом дело. Попробуйте запустить скрипт для v1 и все будет видно. Я не знаю, как все это объяснить.</p>]]></description>
			<author><![CDATA[null@example.com (bubblegum)]]></author>
			<pubDate>Mon, 14 Jul 2025 19:22:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162544#p162544</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162543#p162543</link>
			<description><![CDATA[<p>А в чём принципиальная разница? В исходном коде первый элемент не выделен, так просто выделите его сразу, и вместо <em>wnd.selIdx := 0</em> напишите <em>wnd.selIdx := 1</em>.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 14 Jul 2025 19:15:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162543#p162543</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162542#p162542</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (bubblegum)]]></author>
			<pubDate>Mon, 14 Jul 2025 18:59:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162542#p162542</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162541#p162541</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 14 Jul 2025 15:27:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162541#p162541</guid>
		</item>
		<item>
			<title><![CDATA[AHK v2: Gui- навигация по Up::/Down:: и динамическое изменение шрифта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162540#p162540</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (bubblegum)]]></author>
			<pubDate>Mon, 14 Jul 2025 12:23:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162540#p162540</guid>
		</item>
	</channel>
</rss>
