<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Gui, Edit, File, Function, Voodoo]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9704</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9704&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Gui, Edit, File, Function, Voodoo».]]></description>
		<lastBuildDate>Wed, 18 Jun 2014 10:36:34 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83971#p83971</link>
			<description><![CDATA[<p><strong>Misamoto</strong><br />У вас там путаница с именами переменных и меток. Приведите рабочий пример, который можно скопировать, запустить и хоть что-то увидеть.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Wed, 18 Jun 2014 10:36:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83971#p83971</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83969#p83969</link>
			<description><![CDATA[<p>Я бы сделал данную функцию с помощью gosub, в котором будет счетчик создающихся &quot;едитов&quot;. Точно также можно будет использовать много раз, как и функцию, и не будет проблем с потерями содержимого переменных.</p><p>Ps Немогу показать рабочий код - пишу с телефона. И да название темы непонятное.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Wed, 18 Jun 2014 06:39:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83969#p83969</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83944#p83944</link>
			<description><![CDATA[<p><strong>Misamoto</strong>, извините, но содержание заголовка отражает сумбур (по данной теме, во всяком случае) в Вашей голове. Для начала попытайтесь всё же придумать внятное название для темы. После этого попробуйте освоить <a href="http://www.script-coding.com/AutoHotkey/Variables.1.0.46.07.html#1">правила </a>присвоения значений переменным.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 17 Jun 2014 13:23:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83944#p83944</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83943#p83943</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Что название темы, что суть вопроса - непонятно о чём.</p></blockquote></div><p>Ммм... Ну, прошу прощения. Попробуем еще раз.<br /><strong>Название темы</strong> - перечисление ключевых слов. &quot;Речь идет о графическом интерфейсе, элементе управления &quot;Поле для ввода&quot;, работе с файлами, создании функции и мне нужно немного магии&quot;</p><p><strong>Вопрос</strong> - как легко и быстро создавать на GUI элемент управления EDIT, ввод в который будет связан с текстовым файлом?<br /><strong>Успешные собственные наработки</strong>:<br /></p><div class="codebox"><pre><code>Gui, Selector:Add, edit, x20  yp+15 r3 w350 vStaticEditVar gEditToFile , 
    FileRead, FileContents, %A_ScriptDir%\ConfigTexts\Default.txt
    GuiControl,, CompServEdit, %FileContents%

EditToFile:
    Gui, Submit, NoHide
    FileDelete, %A_ScriptDir%\ConfigTexts\Default.txt
    FileAppend, %StaticEditVar%, %A_ScriptDir%\ConfigTexts\Default.txt
Return</code></pre></div><p>Что делает код - под спойлером.</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>1) Создает поле Edit<br />2) Считывает содержимое файла, который мы с ним связываем<br />3) Делает содержимое этого файла содержанием поля Edit (то есть при открытии графического интерфейса поле открывается с содержимым, взятым из файла).<br />Кроме того подпрограмма, связанная с созданным полем при каждом изменении содержимого поля через графический интерфейс:<br />1) Применяет содержимое поля в переменную, не скрывая графический интерфейс с экрана<br />2) Удаляет связанный файл<br />3) Создаёт связанный файл и записывает в него текущее содержимое переменной, в которой сохранено содержание поля Edit</p></div></div><p><strong>Что не устраивает:</strong> при многократном использовании кода требуется в двух местах менять имя переменной и в трех - имя файла. Много, да и опечатки печалят.<br /><strong>Принятое решение:</strong>Сделать функцию, параметрами которой будут имя файла и переменной.<br /><strong>Получившийся код:</strong><br /></p><div class="codebox"><pre><code>AddEditToFile(GuiName, GuiXpos, GuiYpos, GuiWidth, GuiRows, DynamicEditVar, FileToEdit)
{
Global
Gui, %GuiName%:Add, edit, %GuiXpos% %GuiYPos% %GuiWidth% %GuiRows% v%DynamicEditVar% gGuiEditSub,
FileRead, FileContents, %A_ScriptDir%\ConfigTexts\%FileToEdit%.txt
GuiControl,, %GuiEditVar%, %FileContents%
EditFile = %FileToEdit%
EditVar = `%%GuiEditVar%`%
Return
}

GuiEditSub:
Gui, Submit, NoHide
FileDelete, %A_ScriptDir%\ConfigTexts\%EditFile%.txt
FileAppend, %EditVar%, %A_ScriptDir%\ConfigTexts\%EditFile%.txt
Return</code></pre></div><p>Комментарии к коду под спойлером<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>Параметры функции - это параметры команды Gui, Add,&nbsp; Edit - без них не обойтись. Координаты и размер нового поля, переменная для поля (уникальная), а так же какой файл мы с полем связываем.<br />Без объявления Global функция вываливается с ошибкой. &quot;A control&#039;s variable must be global or static&quot;<br />Создаем поле (работает)<br />Считываем файл (работает)<br />Делаем содержимое файла содержимым поля (работает)</p><p>Так как параметры существуют только внутри функции, которая во время работы с полем уже прекращает свое действие - сохраняем параметры &quot;Переменная поля&quot; и &quot;Связанный файл&quot; в отдельные переменные.<br />Имя файла сохраняется нормально<br />Имя переменной сохраняется без знаков &quot;%&quot; </p><p>Подпрограмма вынесена вне функции (логично)<br />Применяем поля (Ок)<br />Удаляем старый файл (Ок)<br />Записываем новое значение файла (Не ок)</p></div></div><p><strong>Проблема:</strong>В записанном примере содержимое файла становится не содержимым переменной DynamicEditVar,&nbsp; а буквально - &quot;%DynamicEditVar%&quot;. Пробовались разные способы присвоения - результат бывает другой, но все равно неверный.</p><p><strong>Главный вопрос:</strong> Как правильно записать содержимое созданного поля в файл?<br /><strong>Побочный вопрос:</strong> Оно ведь будет работать как я ожидаю если создать несколько полей, правда?</p>]]></description>
			<author><![CDATA[null@example.com (Misamoto)]]></author>
			<pubDate>Tue, 17 Jun 2014 12:35:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83943#p83943</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83939#p83939</link>
			<description><![CDATA[<p>Что название темы, что суть вопроса - непонятно о чём.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 17 Jun 2014 09:19:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83939#p83939</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83936#p83936</link>
			<description><![CDATA[<div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p>А где у Вас переход на метку &quot;GuiEditSub:&quot;?</p><p>А все... увидил.</p><p>Попробуйте не создавать edit в функции, а редактировать его содержимое (controllsettext вроде).</p></blockquote></div><p>Не совсем понимаю как это относится к моему вопросу. Цель функции - сделать так чтобы каждый раз когда я хочу добавить себе в гуй поле, связанное с файлом, мне приходилось вводить для него переменную и имя файла один раз, а не 5. Если для этого есть способ кроме функции, буду благодарен за лекцию, но насколько я понимаю редактирование содержимого Edit - явно из другой области.</p>]]></description>
			<author><![CDATA[null@example.com (Misamoto)]]></author>
			<pubDate>Tue, 17 Jun 2014 07:47:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83936#p83936</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83935#p83935</link>
			<description><![CDATA[<p>А где у Вас переход на метку &quot;GuiEditSub:&quot;?</p><p>А все... увидил.</p><p>Попробуйте не создавать edit в функции, а редактировать его содержимое (controllsettext вроде).</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Tue, 17 Jun 2014 07:16:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83935#p83935</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83934#p83934</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p><span style="color: #008800"><strong>Misamoto</strong>, ознакомьтесь с <a href="http://forum.script-coding.com/viewtopic.php?id=6148">этой</a> темой, отредактируйте заголовок.</span></p></blockquote></div><p>Да, прошу прощения, попутал</p>]]></description>
			<author><![CDATA[null@example.com (Misamoto)]]></author>
			<pubDate>Tue, 17 Jun 2014 05:03:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83934#p83934</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83907#p83907</link>
			<description><![CDATA[<p><span style="color: #008800"><strong>Misamoto</strong>, ознакомьтесь с <a href="http://forum.script-coding.com/viewtopic.php?id=6148">этой</a> темой, отредактируйте заголовок.</span></p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 16 Jun 2014 15:04:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83907#p83907</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83906#p83906</link>
			<description><![CDATA[<p>Снова всем здрасьте и спасибо за предоставленную и предоставляемую помощь.<br />Если вкраце, то я пытаюсь написать себе функцию, которая будет создавать мне контрол Edit, связанный с файлом - при загрузке гуя содержимое Edit становится равно файлу, при изменении содержимого Edit меняется файл.<br />Саму задачу я осилил:</p><div class="codebox"><pre><code>Gui, Selector:Add, edit, x20  yp+15 r3 w350 vStaticEditVar gEditToFile , 
    FileRead, FileContents, %A_ScriptDir%\ConfigTexts\Default.txt
    GuiControl,, CompServEdit, %FileContents%

EditToFile:
    Gui, Submit, NoHide
    FileDelete, %A_ScriptDir%\ConfigTexts\Default.txt
    FileAppend, %StaticEditVar%, %A_ScriptDir%\ConfigTexts\Default.txt
Return
</code></pre></div><p>В виде функции же всё немного сложнее:</p><div class="codebox"><pre><code>AddEditToFile(&quot;Selector&quot;, &quot;xp&quot;, &quot;yp+15&quot;, &quot;w350&quot;, &quot;r3&quot;, &quot;ServComp&quot;, &quot;Default&quot;)

AddEditToFile(GuiName, GuiXpos, GuiYpos, GuiWidth, GuiRows, DynamicEditVar, FileToEdit)
{
Global
Gui, %GuiName%:Add, edit, %GuiXpos% %GuiYPos% %GuiWidth% %GuiRows% v%DynamicEditVar% gGuiEditSub,
FileRead, FileContents, %A_ScriptDir%\ConfigTexts\%FileToEdit%.txt
GuiControl,, %GuiEditVar%, %FileContents%
EditFile = %FileToEdit%
EditVar = %GuiEditVar%
Return
}

GuiEditSub:
Gui, Submit, NoHide
FileDelete, %A_ScriptDir%\ConfigTexts\%EditFile%.txt
FileAppend, %EditVar%, %A_ScriptDir%\ConfigTexts\%EditFile%.txt
Return
</code></pre></div><p>Оно ПОЧТИ работает.<br />Где-то ошибка в переносе в файл содержимого Edit. При разных вариантах написания файл у меня равен: ServComp, %ServComp%, предыдущему содержанию Edit (которое было до пересоздания Гуя) и черт знает чему еще.</p><p>Кроме помощи с этой проблемой также прошу оценить как вообще такая функция будет работать при многократном использовании - это следующий этап теста, после отладки одноразовой работы, но мало ли, вдруг кто заметит какую-нибудь страшную ошибку, которая помешает мне?</p>]]></description>
			<author><![CDATA[null@example.com (Misamoto)]]></author>
			<pubDate>Mon, 16 Jun 2014 14:54:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83906#p83906</guid>
		</item>
	</channel>
</rss>
