Тема: AutoHotkey: в помощь начинающему изучать GUI
Заметку оставил Rujj.
================================================================
Начну с того, что я долго хотел хоть немного понять, как работает GUI. Однако Хелп мне мало помог - там хорошо расписано, но мало понятно. В итоге я разобрался - оказалось, что если идти от простого к сложному - все получается довольно легко . Итак:
Для первой попытки не стоит самому придумывать окна, их размер и расположение и т.д. - воспользуйтесь утилитой в приложении к AutoHotKey под названием SmartGUI.exe, которую можно скачать на страничке загрузки самой AutoHotKey. Примечание: если язык по умолчанию у вас в системе - не английский, SmartGUI.exe будет поругиваться при запуске, что, вобщем-то, не так уж и страшно.
После запуска открывается окно для редактирования - вверху выбираем элемент. При перемещении курсора на поле редактирования - этот элемент отображается, при первом клике мышкой - элемент размещается, при движении мышки сразу после этого - изменяется размер. Этот порядок, в принципе, неизменен. Если нужно удалить - нажмите правой кнопкой мышки на элементе - в появившемся меню выберите пункт Del....
Разместите таким образом элементы Edit и Button (изображено OK) - по одному элементу. Можно ещё добавить Text и ListBox. Сохраним проект. Кстати, если что-то не получилось - не бойтесь всё закрывать и запускать SmartGUI.exe заново.
Посмотрим код, открыв сохраненный файл для редактирования в "блокноте" или подобном текстовом редакторе.
Gui, Add, Edit, x46 y77 w120 h60 , Edit
Gui, Add, Button, x56 y167 w90 h20 , Button
; Generated using SmartGUI Creator 4.0
Gui, Show, x131 y144 h377 w477, New GUI Window
Return
GuiClose:
ExitApp
Код можно читать, как по книжке:
Gui, Add, Edit, x46 y77 w120 h60 , Edit
первые два слова (Gui, Add,) означают GUI создать, третье - что именно создать? --> поле Edit. Подробнее здесь.
Дальше идут необязательные опции xЗНАЧЕНИЕ yЗНАЧЕНИЕ hЗНАЧЕНИЕ wЗНАЧЕНИЕ. Эти опции означают координаты и размер окна. Подробнее здесь.
Последнее значение в коде - значение Edit. Данное значение - это то, что отобразит это поле. Можно использовать переменную, например%EdditOtUsera%.
Точно так же и со следующей строчкой, Gui, Add, Button, x56 y167 w90 h20 , Button.
Следующее, что важно и нельзя пропустить - Gui, Show, - означает, всего навсего, запуск и отображение перечисленного ранее. (После запятой всё то же самое - координаты и размеры. Они устанавливаются автоматом, так что обращать внимание на них не стоит.) Последний аргумент - отображаемый текст.
Теперь можно перейти к следующему разделу. Метки и переход к ним.
Метки - переменные, после которых стоит двоеточие - служат для обозначения участка кода, к которому можно перейти фактически из любого места программы. Можно сравнить метку с горячей клавишей:
Горячая клавиша:
a::
; код
return
Метка в коде:
a:
; код
return
Следующий участок кода:
GuiClose:
ExitApp
означает, что при попытке закрыть окно GUI произойдет автоматический переход к данной метке.
Список заранее определенных событий - здесь.
Разовьем код. Сделаем так, чтобы при нажатии на кнопку происходило событие - открывалось окно, отображающее, что мы набрали в поле Edit.
Для этого воспользуемся следующей информацией: Опции, задающие элементам управления действия и переменные.. Добавим кое-что к этой строке:
Gui, Add, Edit, x46 y77 w120 h60 vEdd, Edit
и к этой строке:
Gui, Add, Button, x56 y167 w90 h20 gGogo, Button
Читаем код: информацию поля Edit записывать в переменную %Edd%, при нажатии на Button переходить на метку Gogo.
Добавляем в код:
Gogo:
; здесь создана метка, на которую пользователь перейдет при нажатии на кнопку
Gui, Submit, NoHide
Msgbox, %Edd%
return
Полученный результат:
Gui, Add, Edit, x46 y77 w120 h60 vEdd
Gui, Add, Button, x56 y167 w90 h20 gGogo, Данные
; Generated using SmartGUI Creator 4.0
Gui, Show, x131 y144 h377 w477, Моё окно!
Return
Gogo:
Gui, Submit, NoHide
Msgbox, %Edd%
; присваиваем элементу Edit пустое значение, обнуляя его
GuiControl,, Edd,
return
GuiClose:
ExitApp
P.S. таким образом, создавая переменные, ассоциированные со значением поля, и метки с подпрограммами - работаем и с другими элементами. Теперь можно приступать к дальнейшему изучению...
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.