<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Gui, Edit, File, Function, Voodoo]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9704&amp;type=atom" />
	<updated>2014-06-18T10:36:34Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9704</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83971#p83971" />
			<content type="html"><![CDATA[<p><strong>Misamoto</strong><br />У вас там путаница с именами переменных и меток. Приведите рабочий пример, который можно скопировать, запустить и хоть что-то увидеть.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2014-06-18T10:36:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83971#p83971</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83969#p83969" />
			<content type="html"><![CDATA[<p>Я бы сделал данную функцию с помощью gosub, в котором будет счетчик создающихся &quot;едитов&quot;. Точно также можно будет использовать много раз, как и функцию, и не будет проблем с потерями содержимого переменных.</p><p>Ps Немогу показать рабочий код - пишу с телефона. И да название темы непонятное.</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2014-06-18T06:39:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83969#p83969</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83944#p83944" />
			<content type="html"><![CDATA[<p><strong>Misamoto</strong>, извините, но содержание заголовка отражает сумбур (по данной теме, во всяком случае) в Вашей голове. Для начала попытайтесь всё же придумать внятное название для темы. После этого попробуйте освоить <a href="http://www.script-coding.com/AutoHotkey/Variables.1.0.46.07.html#1">правила </a>присвоения значений переменным.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2014-06-17T13:23:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83944#p83944</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83943#p83943" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Misamoto]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32189</uri>
			</author>
			<updated>2014-06-17T12:35:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83943#p83943</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83939#p83939" />
			<content type="html"><![CDATA[<p>Что название темы, что суть вопроса - непонятно о чём.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-06-17T09:19:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83939#p83939</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83936#p83936" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Misamoto]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32189</uri>
			</author>
			<updated>2014-06-17T07:47:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83936#p83936</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83935#p83935" />
			<content type="html"><![CDATA[<p>А где у Вас переход на метку &quot;GuiEditSub:&quot;?</p><p>А все... увидил.</p><p>Попробуйте не создавать edit в функции, а редактировать его содержимое (controllsettext вроде).</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2014-06-17T07:16:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83935#p83935</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83934#p83934" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Misamoto]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32189</uri>
			</author>
			<updated>2014-06-17T05:03:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83934#p83934</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83907#p83907" />
			<content type="html"><![CDATA[<p><span style="color: #008800"><strong>Misamoto</strong>, ознакомьтесь с <a href="http://forum.script-coding.com/viewtopic.php?id=6148">этой</a> темой, отредактируйте заголовок.</span></p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2014-06-16T15:04:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83907#p83907</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Gui, Edit, File, Function, Voodoo]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83906#p83906" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Misamoto]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32189</uri>
			</author>
			<updated>2014-06-16T14:54:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83906#p83906</id>
		</entry>
</feed>
