1 (изменено: Мпэт, 2012-02-08 00:39:18)

Тема: AHK: Удаление переменной

Здравствуйте.
Столкнулся вот с такой проблемкой.
Пытаюсь создать скрипт для создания скриптов одного типа.


#F1::
i:=0
label1:
i:=i+1
Gui, Add, Text,, Параметр x:
Gui, Add, Text,, Параметр y:
Gui, Add, Text,, Параметр m:
Gui, Add, Text,, Параметр r:
Gui, Add, Text,, Параметр l:
Gui, Add, Text,, Параметр ch:
Gui, Add, Edit, vx ym ; Опция ym начинает новую колонку элементов управления.
Gui, Add, Edit, vy
Gui, Add, Edit, vm
Gui, Add, Edit, vr
Gui, Add, Edit, vl
Gui, Add, Edit, vch 
Gui, Add, Button, default, Принять ; ButtonПринять (если она есть) будет запущена при нажатии кнопки.
Gui, Show,, Ввод данных
return ; Окончание секции авто-выполнения. Скрипт ожидает каких-нибудь действий пользователя.
GuiClose:
ButtonПринять:
Gui, Submit ; Сохраняем входные данные пользователя в ассоциированной переменной элемента управления.
if (x="")
	{
	x:=0
	}
if (y="")
	{
	y:=0
	}
if (m="")
	{
	m:=0
	}
if (r="")
	{
	r:=0
	}
if (l="")
	{
	l:=0
	}
if (ch="")
	{
	ch:=0
	}

Send,{Enter}L%i%:{Enter}{tab}x:=%x%{Enter}{tab}y:=%y%{Enter}{tab}m:=%m%{Enter}{tab}r:=%r%{Enter}{tab}l:=%l%{Enter}{tab}ch:=%ch%{Enter}{tab}Return{Enter}{Enter}

goto, label1

Return

При нажатии на WIN+F1 выскакивает окошко в которое нужно внести параметры(цифры) и после нажатия кнопки "Принять", скрипт прописывает:

L1:
	x:=1
	y:=2
	m:=3
	r:=4
	l:=5
	ch:=6
	Return

После этого скрипт должен снова выкидывать окошко для ввода данных, но он выдаёт ошибку в строке

Gui, Add, Edit, vx ym ; Опция ym начинает новую колонку элементов управления.

Ибо как я понял он не может создать новую переменную х(ну и последующие соответственно), т.к. она уже существует.
Подскажите как решить эту проблемку?
Заранее благодарен!

2

Re: AHK: Удаление переменной

Нужно вынести добавление элементов GUI за пределы метки label1

3

Re: AHK: Удаление переменной

creature.ws пишет:

Нужно вынести добавление элементов GUI за пределы метки label1

Не подскажешь как? Я только начинаю ковыряться со скриптами.
Если я спущу Label1 ниже GUI, тогда он не будет выдавать окошко повторно, а сразу будет печатать, печатать и печатать.

4

Re: AHK: Удаление переменной

Вероятно, так

Gui, Add, Text,, Параметр x:
Gui, Add, Text,, Параметр y:
Gui, Add, Text,, Параметр m:
Gui, Add, Text,, Параметр r:
Gui, Add, Text,, Параметр l:
Gui, Add, Text,, Параметр ch:
Gui, Add, Edit, vx ym ; Опция ym начинает новую колонку элементов управления.
Gui, Add, Edit, vy
Gui, Add, Edit, vm
Gui, Add, Edit, vr
Gui, Add, Edit, vl
Gui, Add, Edit, vch 
Gui, Add, Button, default, Принять ; ButtonПринять (если она есть) будет запущена при нажатии кнопки.

#F1::
i:=0
label1:
i:=i+1
Gui, Show,, Ввод данных
return ; Окончание секции авто-выполнения. Скрипт ожидает каких-нибудь действий пользователя.
GuiClose:
ButtonПринять:
Gui, Submit ; Сохраняем входные данные пользователя в ассоциированной переменной элемента управления.
if (x="")
    {
    x:=0
    }
if (y="")
    {
    y:=0
    }
if (m="")
    {
    m:=0
    }
if (r="")
    {
    r:=0
    }
if (l="")
    {
    l:=0
    }
if (ch="")
    {
    ch:=0
    }
 
Send,{Enter}L%i%:{Enter}{tab}x:=%x%{Enter}{tab}y:=%y%{Enter}{tab}m:=%m%{Enter}{tab}r:=%r%{Enter}{tab}l:=%l%{Enter}{tab}ch:=%ch%{Enter}{tab}Return{Enter}{Enter}
 
goto, label1
 
Return

5

Re: AHK: Удаление переменной

creature.ws пишет:

Вероятно, так

Спасибо! Работает теперь.
А как сделать, чтоб когда окно для ввода открывается в последующие разы не сохраняло предыдущие данные?
Ато получается так:
Открылось окно(строки пустые), ввёл данные, нажал на кнопку, пропечаталось, открылось окно(строки с предыдущими данными).
Просто не удобно постоянно удалять.

6 (изменено: creature.ws, 2012-02-08 01:25:25)

Re: AHK: Удаление переменной

Вероятно, после Gui, Submit следует добавить очистку полей ввода.
GuiControl.

7 (изменено: Grey, 2012-02-09 02:55:32)

Re: AHK: Удаление переменной

i:=0, varname:="x,y,m,r,l,ch"

#F1::
label1:
   Loop, Parse, varname, CSV
      Gui, Add, Text,, % "Параметр "A_LoopField ":"
   Loop, Parse, varname, CSV
      Gui, Add, Edit, % (A_Index=1 ? "ym":"")" v"A_LoopField
   Gui, Add, Button, Default, Принять
   Gui, Show,, Ввод данных
   Return

ButtonПринять:
   Gui, Submit
   SendRaw, % "`nL"++i ":"
   Loop, Parse, varname, CSV
   {
      GuiControlGet, varvalue,, % A_LoopField
      varvalue:=RegExMatch(varvalue, "\D") ? """"varvalue """":varvalue
      SendRaw, % "`n`t"A_LoopField ":="(!varvalue ? 0:varvalue)
   }
   SendRaw, `n`tReturn`n`n
GuiClose:
   IsClose:=!A_GuiControl ? True:False
   Gui, Destroy
   Goto, % "label"(IsClose ? "2":"1")
label2:
   i:=0
   Return

8

Re: AHK: Удаление переменной

А выше вообще идеальный вариант

9

Re: AHK: Удаление переменной

В точку! Огромное спасибо

10 (изменено: Grey, 2012-02-10 01:15:12)

Re: AHK: Удаление переменной

creature.ws пишет:

...вообще идеальный вариант

Полноценный код в студию!