Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также саму программу AutoHotkey и проблемы её использования)

Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.

Оригинал статьи в AutoHotkey.chm: "GUI control types", в содержании - "GUI, MsgBox, InputBox & Other Dialogs" - "Gui control types".

Ник переводчика: Gourmet.

Настоящее имя переводчика: Валентина Гаврикова, г.Москва.

Типы элементов управления GUI

Содержание

Text (надпись)

Описание: элемент управления Text представляет собой область, содержащую недоступный для редактирования текст без рамки. Часто используется в качестве пояснительной надписи для других элементов управления. Пример:

Gui, Add, Text,, Введите ваше имя:

В приведенном примере последним параметром является строка, предназначенная для вывода на экран. В ней могут содержаться символы перевода строки (`n). Кроме того, с помощью секции продолжения можно разбить одну длинную строку на несколько более коротких.

Если в опциях определена только ширина (W), а количество строк (R) и высота (H) - опущены, слова текста по мере необходимости будут переноситься без разбивки на новую строку, а высота элемента управления будет задана автоматически.

Поскольку содержимое элемента управления находится в последнем параметре команды GUI, в экранировании буквальных запятых нет необходимости, что, впрочем, справедливо и для последних параметров всех прочих команд.

В опции элемента управления можно поместить метку перехода, например, gMySubroutine. После этого каждый раз при щелчке мышью по тексту она будет запускаться автоматически. Это свойство можно использовать для того, чтобы имитировать гиперссылку так, как это показано в приведенном ниже скрипте:

Gui, Font, underline
Gui, Add, Text, cBlue gLaunchGoogle, Щёлкните здесь, чтобы открыть Google
Gui, Font, norm
Gui, Show
return

LaunchGoogle:
Run www.google.com
return

Двойной щелчок можно обнаружить, проверив, содержит ли переменная A_GuiControlEvent слово DoubleClick.

Edit (редактируемое поле ввода)

Описание: элемент управления Edit представляет собой область, в которой пользователь может напечатать произвольный текст. Пример:

Gui, Add, Edit, r9 vMyEdit,
(
Текст, который появится в поле редактирования
(опустите этот параметр, чтобы поле редактирования осталось пустым)
)

Если задано несколько строк текста, элемент управления будет многострочным. Например, задав в опциях r3, вы получите трехстрочное редактируемое поле ввода со следующими характеристиками: вертикальная полоса прокрутки, перенос слова без разбивки на новую строку, клавиша Enter осуществляет ввод, а не запускает кнопку по умолчанию окна.

Чтобы начать новую строку в многострочном редактируемом поле ввода, в последнем параметре (содержимом) можно задать либо просто символ перевода строки (`n), либо символ перевода строки вместе с символом возврата каретки (`r`n). Оба способа приведут к появлению в редактируемом поле ввода пары непечатаемых символов `r`n. Однако если элемент управления сохраняется в своей переменной с помощью команд Gui Submit или GuiControlGet, то каждая комбинация `r`n в тексте будет преобразована просто в символ перевода строки (`n). В примере, приведенном ниже, показано, как сохранить текст в файл:

FileAppend, %MyEdit%, C:\Saved File.txt

Если в элементе управления разрешен перенос слов без разбивки на другую строку (что является свойством по умолчанию для многострочных редактируемых полей ввода), то переносы, осуществляемые во время ввода данных, не приведут к появлению символов перевода строки (это может произойти только при нажатии клавиши Enter).

Хотя в Windows 95/98/Me объем текста в многострочных редактируемых полях ввода ограничен 64 KB, в Windows NT/2k/XP и более поздних операционных системах объем текста может доходить до 4 GB. Память выделяется по мере необходимости при наборе текста.

В версиях AutoHotkey 1.0.35 и выше в опциях элемента управления можно поместить метку перехода, например, gMySubroutine. После этого каждый раз при изменении пользователем содержимого элемента управления эта метка будет запускаться автоматически.

СОВЕТ: чтобы загрузить текстовый файл в редактируемое поле ввода, используйте команды FileRead и GuiControl. Например:

Gui, Add, Edit, R20 vMyEdit
FileRead, FileContents, C:\My File.txt
GuiControl,, MyEdit, %FileContents%

Опции Edit (чтобы удалить опцию, поставьте перед ней знак минуса):

Limit: ограничивает ввод текста видимой шириной редактируемого поля. Кроме того, чтобы ограничить ввод текста определенным количеством символов, можно непосредственно после опции указать их количество. Например, Limit10 позволит ввести не более 10 символов.

Lowercase: символы, вводимые пользователем, автоматически конвертируются в нижний регистр.

Multi: позволяет вводить несколько строк текста. Однако обычно в этой опции нет необходимости, поскольку количество строк автоматически выводится из заданных значений высоты (H), количества строк (R) или содержимого (Text).

Number: позволяет вводить в поле только цифры (впрочем, остается возможность вводить нечисловые символы путем копирования). Альтернативным способом принудительного введения числовых данных является присоединение к Edit элемента управления UpDown.

Password: скрывает введенные данные (например, пароль), заменяя для этого введенные пользователем символы на маскирующие знаки. Если вы не хотите использовать маскирующий знак, заданный по умолчанию, укажите желаемый символ непосредственно после слова Password. Например, если задать Password*, то маскирующим знаком, вместо установленного в Windows XP по умолчанию черного кружка (буллита), будет звездочка. Примечание: данная опция не действует для многострочных редактируемых полей ввода.

ReadOnly: не позволяет пользователю изменять содержимое элемента управления. Тем не менее, текст можно прокручивать для просмотра, выделять и копировать в буфер.

Tn: опция T используется для того, чтобы задать шаг табуляции в пределах многострочного редактируемого поля ввода (поскольку шаг табуляции определяет позиции колонок, по которым будут "прыгать" буквальные символы табуляции, их можно использовать для разбиения текста на колонки). Если опция T не используется, позиции табуляции устанавливаются через каждые 32 единицы диалога (ширина "единицы диалога" зависит от операционной системы). Если опция T используется однократно, позиции табуляции задаются через каждые n единиц по всей ширине элемента управления. Например, команда Gui, Add, Edit, vMyEdit r16 t64 удвоит используемое по умолчанию расстояние между позициями табуляции. Чтобы создать собственные позиции табуляции, задайте опцию T несколько раз так, как показано в следующем примере: Gui, Add, Edit, vMyEdit r16 t8 t16 t32 t64 t128. Для каждой позиции колонки с абсолютными координатами задается одна позиция табуляции. Этот список может содержать максимум 50 позиций табуляции.

Uppercase: символы, вводимые пользователем, автоматически конвертируются в верхний регистр.

WantCtrlA [в версиях 1.0.44 и выше]: задайте -WantCtrlA (минус WantCtrlA), чтобы запретить при нажатии Control+A выделение всего текста в редактируемом поле ввода.

WantReturn: задайте -WantReturn (т.е. WantReturn со знаком минуса), чтобы многострочное редактируемое поле ввода не реагировало на нажатие клавиши Enter. При этом нажатие клавиши Enter будет иметь тот же эффект, что и нажатие кнопки окна по умолчанию (если таковая имеется). В этом случае, чтобы начать новую строку, можно воспользоваться комбинацией Control+Enter.

WantTab [в версиях 1.0.38.03 и выше]: приводит к тому, что при нажатии клавиши Tab печатается символ табуляции, а не осуществляется переход к следующему элементу управления. Если данная опция не задана, то для того, чтобы напечатать символ табуляции, можно воспользоваться комбинацией Control+Tab. Примечание: несмотря на то, что опция WantTab также действует в однострочном редактируемом поле ввода, символы табуляции в таком поле отображаются в виде пустых квадратов (empty-box charachter - недостающий символ), хотя и сохраняются как настоящие символы табуляции.

-Wrap (минус wrap): выключает возможность переноса слов без разбивки на другую строку в многострочном редактируемом поле ввода. Данный стиль нельзя изменить с помощью команды GuiControl. Вместо этого, необходимо удалить элемент управления и его окно, после чего создать их снова, уже с новыми настройками. В качестве альтернативного варианта можно создать два перекрывающихся редактируемых поля ввода, в одном из которых разрешить перенос слова без разбивки, а в другом - нет. Неиспользуемое поле можно оставить пустым и скрыть.

UpDown [в версиях 1.0.35 и выше] (счётчик)

Описание: элемент управления UpDown представляет собой две кнопки со стрелками, вверх и вниз, которые используются для увеличения или уменьшения значения. По умолчанию элемент управления UpDown автоматически присоединяет к себе ранее добавленный элемент управления. Этот ранее добавленный элемент управления называют "присоединенным элементом управления". Наиболее распространенным примером такого присоединения является так называемый "счетчик", представляющий собой связку элементов управления UpDown и Edit. Пример:

Gui, Add, Edit
Gui, Add, UpDown, Range1-10, 5

В этом примере элемент управления Edit присоединен к элементу управления UpDown. Каждый раз при нажатии одной из кнопок со стрелками, число в элементе управления Edit автоматически возрастает или уменьшается.

К элементу управления UpDown также можно присоединить элементы управления Text или ListBox. Однако есть вероятность, что вследствие ограничений в операционной системе, элементы управления, отличные от упомянутых (в частности, комбинированный (ComboBox) и выпадающий (DropDownList) списки), не будут работать корректно с метками перехода и другими возможностями.

Задайте начальную позицию элемента управления UpDown в качестве последнего параметра (если этот параметр опущен, отсчет начинается с 0 или с числа, входящего в ближайший к нулю допустимый диапазон).

При использовании команды Gui Submit ассоциированная с элементом управления выходная переменная (если таковая существует) принимает текущую числовую позицию элемента управления UpDown. Если UpDown присоединен к элементу управления Edit и вы не хотите проверять введенные пользователем данные, тогда лучше всего вместо значений Edit использовать значения UpDown, так как UpDown всегда возвращает значение, входящее в допустимый диапазон, даже если пользователь задал в элементе управления Edit какое-нибудь нечисловое или не входящее в диапазон значение. Кроме того, в числах, состоящих более чем из трех цифр, по умолчанию ставятся разделительные знаки (например, в виде запятой), отделяющие тысячи. Эти разделительные знаки хранятся в выходной переменной элемента управления Edit, но не элемента управления UpDown.

Если в UpDown задана метка перехода, каждый щелчок мышью по кнопкам со стрелками или нажатие клавиш со стрелками приведет к ее запуску. Также при каждом запуске метки перехода в выходной переменной, ассоциированной с элементом управления UpDown, будет сохранена его позиция.

Опции UpDown:

Horz: меняет направление стрелок на кнопках элемента управления с вверх/вниз на вправо/влево. Кроме того, опция Horz по умолчанию отсоединяет присоединенный элемент. Этого можно избежать, если в опциях элемента управления задать Horz 16.

Left: помещает элемент управления UpDown в левой части своего "присоединенного элемента".

Range: задает диапазон, отличный от 0-100. После слова Range задайте нижнюю и верхнюю границы диапазона, разделенные тире. Например, опция, заданная в виде Range1-1000, позволит выбрать число от 1 до 1000; Range-50-50 - от -50 до 50; а Range-10--5 - от -10 до -5. Минимальное и максимальное числа можно поменять местами, чтобы стрелки сменили свое обычное направление на противоположное. Самый широкий допустимый диапазон – -2147483648-2147483647. Однако, чтобы в Windows 95 и NT4 можно было использовать диапазон шире, чем -32767-32767, необходимо установить Internet Explorer не ниже версии 5.0. И последнее: если присоединенным элементом управления является список (ListBox), то значением диапазона по умолчанию будет 32767-0 для вертикального расположения и обратный диапазон - для горизонтального (если использована опция Horz).

Wrap: приводит к тому, что при попытке пользователя выйти за пределы минимального значения, элемент управления переходит к максимальному значению и наоборот. Если опция Wrap не задана, элемент управления по достижении максимального или минимального значения остановится.

-16 (минус 16): отсоединяет вертикальный элемент управления UpDown от присоединенного элемента управления. В результате для UpDown отпадает необходимость согласовывать свои размеры с размерами присоединенного элемента – он получает возможность иметь любые заданные ширину, высоту и расположение. Кроме того, UpDown без присоединенного элемента управления сам отслеживает свое местоположение, которое можно извлечь обычным путем, например, с помощью команды Gui Submit.

Picture (или Pic, картинка)

Описание: элемент управления Picture представляет собой область, содержащую рисунок (в последних двух абзацах данного раздела указаны типы файлов, поддерживаемые различными версиями операционных систем). Последним параметром данной команды является имя файла рисунка. Если не определен точный путь, предполагается, что файл расположен в папке A_WorkingDir. Пример:

Gui, Add, Picture, w300 h-1, C:\My Pictures\Company Logo.gif

Чтобы сохранить текущие ширину и/или высоту изображения, опустите опции W и/или H. В противном случае, изображение приобретет заданные ширину и/или высоту. (Также, в зависимости от этих размеров, из множества иконок, содержащихся в .ICO-файле, выбирается иконка, подлежащая загрузке.) Для того чтобы при увеличении или уменьшении изображения сохранить существующие пропорции, задайте для одного из размеров значение -1, а для другого – положительное число. Например, если задать "w200 h-1", ширина изображения увеличится на 200 пикселей, а высота будет установлена автоматически. Если картинку не удается загрузить или отобразить (например, из-за того, что файл не найден), элемент управления остается пустым, и значение ширины и высоты устанавливается равными нулю.

В опции элемента управления можно поместить метку перехода, например, gMySubroutine. Это приведет к тому, что метка будет автоматически вызываться при каждом щелчке пользователя по картинке. Двойной щелчок можно обнаружить, если проверить, содержит ли переменная A_GuiControlEvent слово DoubleClick.

Для того чтобы сделать картинку фоном для других элементов управления, ее, как правило, добавляют перед этими элементами управления. Однако если эти элементы управления предназначены для ввода данных, а картинка имеет метку перехода, создайте картинку после других элементов управления и задайте в опциях картинки 0x4000000 (стиль WS_CLIPSIBLINGS). Этот прием также поможет сделать картинку фоном для элемента управления Tab или ListView.

Иконки, курсоры и анимированные курсоры: доступные для загрузки иконки и курсоры находятся в файлах следующего типа: ICO, CUR, ANI, EXE, DLL, CPL, SCR, а также в других типах файлов, содержащих иконки. Чтобы использовать группы иконок, помимо первой, задайте в опциях слово Icon и номер нужной вам группы. В примере, приведенном ниже, используется иконка по умолчанию из второй группы:

Gui, Add, Picture, Icon2, C:\My Application.exe

Если в опциях задать слово AltSubmit, программа загрузит изображение с помощью динамической библиотеки GDIPlus.dll компании Microsoft, что может привести к тому, что изображения с расширением GIF и BMP, а также иконки, будут иметь другой вид. Например, изображение с расширением ICO/GIF и прозрачным фоном будет загружено как прозрачный точечный рисунок, что позволит вступить в силу опции BackgroundTrans. Если файл GDIPlus недоступен (см. следующий абзац), опция AltSubmit будет пропущена, а изображение загружено с помощью обычных методов.

Все операционные системы поддерживают изображения с расширением GIF, JPG, BMP, ICO, CUR и ANI. Кроме уже перечисленных расширений, в Windows XP и других, более поздних операционных системах Windows, поддерживаются такие форматы, как PNG, TIF, Exif, WMF и EMF. Чтобы более ранние, чем Windows XP, операционные системы поддерживали эти форматы, нужно скопировать файл GDI+ DLL (предоставляемый компанией Microsoft бесплатно) в папку AutoHotkey.exe (однако если речь идет о скомпилированном скрипте, скопируйте DLL в папку скрипта). Чтобы скачать DLL, на сайте www.microsoft.com в окошке поиска наберите: gdi redistributable.

Из-за ошибки в операционных системах Windows 95/98/Me, анимированные курсоры большего, чем 90x90 размера, могут привести к аварийному завершению работы скрипта.

Button (кнопка)

Описание: элемент управления Button представляет собой кнопку, предназначенную для запуска какой-либо операции. Последним параметром здесь является название кнопки, которое отображается на ее поверхности и может содержать символы перевода строки (`n). Пример:

Gui, Add, Button, Default, OK

В опциях этого примера содержится слово Default, нужное для того, чтобы сделать кнопку "OK" кнопкой по умолчанию. Теперь при нажатии ENTER, автоматически запустится та операция, за которую ответственна кнопка по умолчанию, кроме случаев, когда фокус ввода с клавиатуры находится на другой кнопке или стилем многострочного редактируемого элемента управления является WantReturn. В следующем примере показано, как позднее можно сделать кнопкой по умолчанию другую кнопку. Здесь кнопкой по умолчанию становится Cancel:

GuiControl, +default, Cancel

В приведенном ниже примере показано, как сделать, чтобы в окне вообще не было кнопок по умолчанию:

GuiControl, -default, OK

Для того чтобы выделить одну из букв, в названии кнопки можно использовать амперсанд (&). Например:

Gui, Add, Button,, &Pause

В приведенном примере будет выделена буква P, что позволит пользователю использовать комбинацию Alt+P в качестве "быстрой клавиши".

Если у кнопки нет явно заданной метки перехода, метка будет присвоена автоматически. Например, если в первом окне GUI содержится кнопка OK, при ее нажатии будет запущена метка ButtonOK (если таковая существует). Для последующих окон GUI в автоматически присвоенной метке кнопки добавляется номер окна, например: 2ButtonOK.

Если в тексте на кнопке есть пробелы, амперсанды, символы перевода строки (`n), или возврата каретки (`r), то в автоматически присвоенной метке эти символы будут опущены. Например, автоматически присвоенной меткой кнопки под названием "&Pause" будет ButtonPause. Подобным образом, меткой кнопки "Save && Exit" будет ButtonSaveExit (двойной амперсанд используется для отображения одного буквального амперсанда).

Checkbox (флажок)

Описание: элемент управления Checkbox представляет собой маленькое окошко, где при выборе варианта On/Off, Yes/No и т.д. ставится или снимается флажок. Пример:

Gui, Add, Checkbox, vShipToBillingAddress, Доставить на расчетный адрес?

Последним параметром здесь является надпись, отображаемая рядом с окошечком-флажком, которая обычно используется как подсказка или описание того, что делает этот флажок. Эта надпись может содержать символы перевода строки (`n). Если в опциях задана только ширина (W), а количество строк (R) и высота (H) - опущены, слова в тексте будут по мере необходимости переноситься без разбивки на новую строку, а высота элемента управления будет установлена автоматически. Если флажок установлен, то выходной переменной, ассоциированной с флажком (если таковая переменная существует), будет присвоено число 1, если снят - 0, а если элемент управления не определен/серый – число -1.

Для включения третьего режима, при котором вместо черной, отображается серая галочка, задайте в опциях слово Check3 ("серый" режим указывает на то, что флажок и не установлен, и не снят). Для того чтобы флажок по умолчанию был черным или серым, задайте в опциях слово Checked или CheckedGray соответственно. Можно также задать начальное состояние флажка, поместив сразу же за словом Checked цифры 0, 1 или -1. Другими словами, Checked и Checked%VarContainingOne% означают одно и то же.

В опциях элемента управления можно поместить метку перехода, например, gMySubroutine. Это приведет к автоматическому запуску метки при каждом щелчке по флажку или его изменении.

Radio (переключатель)

Элемент управления Radio представляет собой кнопку-переключатель – маленький кружок, в котором можно поставить отметку (т.е. включить - on) или убрать отметку (т.е. выключить - off). Пример:

Gui, Add, Radio, vMyRadioGroup, Не осуществлять отправку, пока все наименования товара не будут в наличии.

Данный элемент управления обычно входит в группу кнопок-переключателей, которая содержит несколько таких кнопок. Когда пользователь включает (on) одну из кнопок, остальные автоматически устанавливаются на off (внутри группы можно перемещаться с помощью клавиш со стрелками). Группа переключателей формируется автоматически из последовательно добавленных кнопок-переключателей. Для того чтобы сформировать новую группу, задайте слово Group в опциях первой кнопки, которая войдет в эту группу; или просто добавьте перед новой группой элемент управления, не являющийся переключателем: первый же переключатель, добавленный после этого элемента управления, автоматически начнет новую группу.

В качестве последнего параметра задайте надпись, которая будет отображена справа от кнопки-переключателя. Эта надпись обычно используется как подсказка или описание и может включать в себя символы перевода строки (`n). Если в опциях задана только ширина (W), а количество строк (R) и высота (H) - опущены, слова в тексте будут по мере необходимости переноситься без разбивки на новую строку, а высота элемента управления будет установлена автоматически.

Для того чтобы кнопка по умолчанию находилась в режиме on (включено), задайте в опциях слово Checked. Можно также задать начальную позицию кнопки, поместив сразу же после слова Checked цифры 0 или 1 (0 - отметка снята, 1 – поставлена). Другими словами, "Checked" и "Checked%VarContainingOne%" означают одно и то же.

Выходной переменной, ассоциированной с кнопкой-переключателем (если таковая переменная существует), присваивается число 1 для "on" и 0 - для "off". Однако если только у одной кнопки из группы есть переменная, ей будет присвоен номер выбранной в данный момент кнопки: 1 - номер первой кнопки (в порядке их создания), 2 - второй и т.д. Если ни одна из кнопок не выбрана, переменной присваивается 0.

В опции элемента управления можно поместить метку перехода например, gMySubroutine. Это приведет к тому, что метка будет автоматически вызываться каждый раз, когда кнопка переключается на on (включено). В отличие от режима единственной переменной, описанного в предыдущем абзаце, метка перехода должна быть определена для каждой из тех кнопок-переключателей в группе, метка которых должна быть запущена. Это дает возможность игнорировать щелчки по определенным кнопкам. И последнее: двойной щелчок можно обнаружить, если проверить, содержит ли переменная A_GuiControlEvent слово DoubleClick.

DropDownList (или DDL, выпадающий список)

Описание: элемент управления DropDownList представляет собой список вариантов, отображающийся при нажатии на маленькую кнопку. Последним параметром в этом случае является список вариантов, разделенный символами конвейера (|), например, Choice1|Choice2|Choice3. Пример:

Gui, Add, DropDownList, vColorChoice, Black|White|Red|Green|Blue

Для того чтобы при первом появлении окна один из пунктов уже был выбран по умолчанию, поместите в параметрах после этого пункта двойной символ конвейера. Кроме того, в опциях можно задать слово Choose и сразу же за ним - порядковый номер того пункта, который будет выбран заранее. Например, если задать Choose5, будет выбран пятый пункт (также можно задать переменную, например, Choose%Var%). Для того чтобы поменять выбранный пункт или добавить/удалить пункт из списка уже после того, как элемент управления создан, воспользуйтесь командой GuiControl.

Для автоматической конвертации всех пунктов из списка в верхний или нижний регистр, задайте в опциях Uppercase или Lowercase соответственно. А чтобы автоматически отсортировать содержимое списка в алфавитном порядке, задайте слово Sort (пункты, добавленные позднее при помощи команды GuiControl, также будут отсортированы). Кроме того, опция Sort предоставляет возможность последовательного поиска в развернутом списке, при котором пункт ищется по первым нескольким символам его названия.

При использовании команды Gui Submit выходной переменной, ассоциированной с данным элементом управления (если такая переменная существует), присваивается текст выбранного на тот момент пункта. Однако если элемент управления имеет свойство AltSubmit, то вместо текста выходной переменной будет присвоен номер позиции этого пункта (номер позиции первого пункта - 1, второго - 2, и т.д).

В опциях элемента управления можно задать метку перехода, например, gMySubroutine. При этом метка будет автоматически вызываться при выборе очередного пункта.

Используйте опции R и H, чтобы задать высоту выпадающего списка. Например, при R5 высота списка составит 5 строк. Если же обе эти опции опущены, список в высоту займет всю доступную область рабочего стола (впрочем, в более ранних, чем Windows XP, операционных системах, количество видимых рядов по умолчанию равно трем).

Вместо символа конвейера (|), можно использовать другой разделитель. Например, команда Gui +Delimiter`n заменит символ конвейера символом перевода строки, а команда Gui +DelimiterTab - на символ табуляции (`t).

ComboBox (комбинированный список)

Описание: элемент управления ComboBox очень похож на элемент управления DropDownList, однако в отличие от последнего, позволяет в качестве альтернативы выбору пункта из списка вводить текст в свободном формате. Пример:

Gui, Add, ComboBox, vColorChoice, Red|Green|Blue|Black|White

В дополнение к опциям, присущим элементу управления DropDownList, о которых рассказывалось выше, в опции ComboBox можно включить слово Limit, ограничивающее ввод данных шириной редактируемого поля ввода. Можно также задать слово Simple, в результате чего ComboBox будет вести себя как редактируемое поле ввода со списком (ListBox) внизу.

При использовании команды Gui Submit, выходной переменной, ассоциированной с элементом управления (если такая переменная существует), присваивается текст выбранного на тот момент пункта. Однако если элемент управления имеет свойство AltSubmit, то вместо текста выходной переменной будет присвоен номер позиции этого пункта (номер позиции первого пункта - 1, второго - 2, и т. д.). Если пункт не выбран, то и в том и в другом случае выходной переменной будет присвоено содержимое редактируемого поля ввода.

В опциях элемента управления можно поместить метку перехода например, gMySubroutine. Это приведет к тому, что метка будет автоматически загружаться при выборе каждого нового пункта.

ListBox (список)

Описание: элемент управления ListBox представляет собой относительно большое по высоте окошко со списком вариантов для выбора. Здесь последним параметром является разделенный символами конвейера список вариантов, например, Choice1|Choice2|Choice3. Пример:

Gui, Add, ListBox, vColorChoice, Red|Green|Blue|Black|White

Для того чтобы при первом появлении окна один из пунктов уже был выбран по умолчанию, поместите после него двойной символ конвейера. (Чтобы выбрать несколько пунктов, необходимо в дополнение к двойному символу конвейера после каждого из выбранных пунктов, задать в опциях слово Multi.) Кроме того, в опциях можно задать слово Choose и сразу же за ним - порядковый номер того пункта, который будет выбран заранее. Например, если задать Choose5, будет выбран пятый пункт. Для того чтобы поменять выбранный пункт или добавить/удалить пункт из списка после того, как элемент управления уже создан, воспользуйтесь командой GuiControl.

При использовании команды Gui Submit выходной переменной, ассоциированной с элементом управления (если такая переменная существует), присваивается текст выбранного на тот момент пункта. Однако если элемент управления имеет свойство AltSubmit, то вместо текста выходной переменной будет присвоен номер позиции этого пункта (номер позиции первого пункта - 1, второго - 2, и т. д.).

В опциях элемента управления можно задать метку перехода например, gMySubroutine. Это приведет к тому, что метка будет автоматически вызываться при выборе каждого нового пункта. При двойном щелчке по пункту, встроенной переменной A_GuiControlEvent вместо строки Normal присваивается DoubleClick. В версиях 1.0.36 и выше переменной A_EventInfo присваивается номер позиции того пункта, по которому был сделан двойной щелчок (номер позиции первого пункта - 1, второго - 2, и т. д.).

Для того чтобы увеличить быстродействие при добавлении в ListBox большого количества пунктов, можно использовать команду GuiControl, -Redraw, MyListBox перед добавлением пунктов и команду GuiControl, +Redraw, MyListBox – после (в версиях 1.0.36 и выше).

Опции ListBox:

Choose: См. выше.

Multi: позволяет одновременно выбирать несколько пунктов при помощи комбинаций shift+щелчок мышью и control+щелчок мышью. (Для того, чтобы избежать необходимости использовать приведенные комбинации, задайте вместо слова Multi, число 8). В этом случае команда Gui Submit сохранит список строк-пунктов, отделенных друг от друга разделителем, в выходной переменной элемента управления. Однако если действует опция AltSubmit, то вместо строк команда Gui Submit сохранит список порядковых номеров пунктов, отделенных друг от друга разделителем. Например, 1|2|3 означает, что выбраны первые три пункта. Для того, чтобы извлечь отдельные элементы из строки, используйте синтаксический разбор (parsing loop) так, как показано в примере:

Gui, Add, ListBox, vColorChoice Multi, Красный|Зеленый||Голубой||Черный|Белый||
Gui, Add, Button, Default, OK
Gui, show
ReturnButtonOK:
Gui, Submit
Loop, parse, ColorChoice, |
{
    MsgBox %A_Index%-й выбранный элемент - %A_LoopField%. 
}

Вместо символа конвейера (|), можно использовать другой разделитель. Например, команда Gui +Delimiter`n заменит символ конвейера символом перевода строки, а команда Gui +DelimiterTab - символом табуляции (`t).

ReadOnly: запрещает визуальное выделение пунктов при выборе их из списка (тем не менее, команда Gui Submit сохранит выбранный пункт).

Sort: автоматически сортирует содержимое списка в алфавитном порядке (пункты, добавленные позднее с помощью команды GuiControl, также будут отсортированы). Кроме того, опция Sort предоставляет возможность последовательного поиска, при котором пункт ищется по первым нескольким символам его названия.

Tn: при помощи буквы T можно задавать позиции табуляции. Это свойство используется для разбиения текста на колонки. Если опция T не используется, позиции табуляции устанавливаются через каждые 32 единицы диалога (ширина "единицы диалога" зависит от операционной системы). Если опция T используется однократно, позиции табуляции задаются через каждые n единиц по всей ширине элемента управления. Например, команда Gui, Add, ListBox, vMyListBox t64 удвоит используемое по умолчанию расстояние между позициями табуляции. Чтобы создать собственные позиции табуляции, задайте опцию T несколько раз так, как показано в следующем примере: Gui, Add, ListBox, vMyListBox t8 t16 t32 t64 t128. Для каждой позиции колонки с абсолютными координатами задается одна позиция табуляции. Этот список может содержать максимум 50 позиций табуляции.

ListView (список) и TreeView (дерево)

См. описание ListView и TreeView в отдельных статьях.

Hotkey (горячая клавиша)

Описание: элемент управления Hotkey представляет собой окошко, похожее на однострочный редактируемый элемент управления. В нем отображается комбинация клавиш, нажатая пользователем. Например, если пользователь в английской клавиатурной раскладке набрал Control+Alt+C, в окошке отобразится "Ctrl + Alt + C".

При использовании команды Gui Submit выходной переменной, ассоциированной с элементом управления (если таковая существует), присваиваются модификаторы горячей клавиши и имя, совместимые с командой Hotkey. Например: ^!C, +!Home, +^Down, ^Numpad1, !NumpadEnd. Если ни одной горячей клавиши в элементе управления не отображено, выходная переменная значений не имеет. Примечание: некоторые клавиши, несмотря на разные имена, отображаются одинаково. Например, как ^Numpad7, так и ^NumpadHome могут быть отображены как Ctrl + Num 7.

По умолчанию, элемент управления в начальной позиции не содержит горячих клавиш. Для того чтобы по умолчанию в элементе управления отображалась горячая клавиша, задайте ее модификаторы и имя в качестве последнего параметра так, как показано в примере: Gui, Add, Hotkey, vMyHotkey, ^!p.

Поддерживаются следующие модификаторы: ^ (Control), ! (Alt), и + (Shift). Доступные имена клавиш можно посмотреть здесь.

В опциях элемента управления можно поместить метку перехода например, gMySubroutine. Это приведет к тому, что метка будет автоматически запускаться при каждом изменении горячей клавиши. Кроме того, при каждом запуске метки перехода горячая клавиша сохраняется в выходной переменной, ассоциированной с элементом управления (если такая переменная существует). Примечание: метка перехода запускается даже при неполной горячей клавише. Например, когда пользователь удерживает клавишу Control, метка перехода запускается первый раз, а выходной переменной присваивается только знак крышки (^). После того, как горячая клавиша полностью нажата, метка запускается снова, а выходная переменная содержит уже полную комбинацию.

Для того чтобы ограничить количество типов горячих клавиш, доступных для ввода, задайте слово Limit, за которым следует одно число или сумма нескольких чисел, приведенных далее:

1: Запретить немодифицированные клавиши.

2: Запретить горячие клавиши, начинающиеся с Shift.

4: Запретить горячие клавиши, начинающиеся с Control.

8: Запретить горячие клавиши, начинающиеся с Alt.

16: Запретить горячие клавиши, начинающиеся с Shift-Control.

32: Запретить горячие клавиши, начинающиеся с Shift-Alt.

64: Данное значение не поддерживается (работает некорректно).

128: Запретить горячие клавиши, начинающиеся с Shift-Control-Alt.

Например, если задать Limit1, для ввода будут запрещены такие немодифицированные клавиши, как буквы и цифры, а при Limit15 потребуется как минимум два модификатора. Запрещенная комбинация модификаторов при вводе автоматически (и визуально) заменяется на Control+Alt.

Элемент управления Hotkey имеет ограниченные возможности. Например, он не поддерживает ни горячие клавиши на мыши/джойстике, ни клавиши Windows (LWin и RWin). Единственным средством обойти это ограничение и получить возможность использовать такие дополнительные модификаторы, как клавиши Windows, является создание одного или нескольких флажков (checkboxes).

DateTime [в версиях 1.0.35 и выше] (поле даты/времени)

Описание: элемент управления DateTime представляет собой окошко, похожее на однострочный редактируемый элемент управления. В нем отображаются дата и/или время. В DateTime также предусмотрен календарь. Пример:

Gui, Add, DateTime, vMyDateTime, LongDate

Одно из приведенных ниже значений можно задать в качестве последнего параметра:

(пропущен): если параметр не задан, используется краткий региональный формат даты. Например, формат может быть таким: 6/1/2005.

LongDate: дата в длинном (полном) формате. Например: Wednesday, June 01, 2005.

Time: время в региональном формате. Несмотря на то, что данный параметр не предусматривает отображение даты, она присутствует в элементе управления и извлекается вместе со временем в формате YYYYMMDDHH24MISS.

(пользовательский формат): задайте дату и время в любом формате. Например, если задать M/d/yy HH:mm, на экране будет отображено 6/1/05 21:37. Подобным образом, dddd MMMM d, yyyy hh:mm:ss tt будет выглядеть как Wednesday June 1, 2005 09:37:45 PM. Буквальные буквы и цифры необходимо заключать в одинарные кавычки: 'Date:' MM/dd/yy 'Time:' hh:mm:ss tt. В отличие от этого, символы не являющиеся буквами или цифрами, например, пробелы, символы табуляции, слеши, двоеточия, запятые и другие знаки пунктуации, заключать в одинарные кавычки нет необходимости. Исключением является сама одинарная кавычка: для того, чтобы получить буквальные кавычки, задайте последовательно четыре одинарные (''''), или, если цитата уже заключена во внешнюю пару кавычек, только две одинарные кавычки.

Использование DateTime

Чтобы получить дату, отличную от отображаемой по умолчанию даты текущего дня, задайте в опциях слово Choose и сразу же за ним – дату в формате YYYYMMDD. Например, если задать Choose20050531, датой по умолчанию будет 31 мая 2005 года (также можно задать переменную, например, Choose%Var%). Для того чтобы по умолчанию не отображались ни дата, ни время, задайте ChooseNone. При этом дополнительно внутри элемента управления будет создан флажок, который будет оставаться пустым, пока элемент управления не содержит дату. Если элемент управления не содержит дату, команды Gui Submit и GuiControlGet извлекают пустое значение (пустую строку).

При желании в окошке можно вывести время суток. Однако при переходе к элементу управления или выходе из него перед временем суток всегда должна стоять дата. Та часть, которая представляет собой время, имеет формат HH24MISS (часы, минуты, секунды), где HH24 выражено в 24-часовом формате. Например, 09 - это 9 часов утра, а 21 - 9 часов вечера. Таким образом, полная строка, представляющая собой дату и время, будет иметь формат YYYYMMDDHH24MISS.

Для того чтобы задать дату в формате YYYYMMDDHH24MISS, необходима только первая часть выражения. Если какой-либо элемент опущен, по умолчанию он устанавливается на следующие значения:
MM: 01 месяц
DD: 01 день
HH24: 00 часов
MI: 00 минут
SS: 00 секунд

Чтобы выбрать текущую дату, можно щелкнуть по находящейся в нижней части календаря строке с текущей датой. Кроме того, щелчок по году и названию месяца, позволяет выбрать их новые значения.

Навигация с помощью клавиатуры: для увеличения или уменьшения значения элемента управления используйте клавиши со стрелками вверх/вниз (Up/Down), плюс/минус в правой части клавиатуры (NumpadPlus/Minus) и Home/End, а чтобы переходить с одного поля на другое в пределах элемента управления – клавиши со стрелками вправо и влево (LeftArrow и RightArrow). Чтобы в выпадающем календаре:

При использовании команды Gui Submit выходной переменной, ассоциированной с элементом управления (если таковая существует), присваиваются выбранные дата и время в YYYYMMDDHH24MISS формате. Дата и время присваиваются вне зависимости от того, отображены ли они в элементе управления.

Если для элемента управления задана метка перехода, она запускается при каждом изменении даты или времени. При каждом запуске выходная переменная, ассоциированная с элементом управления (если таковая существует), автоматически обновляется. Ей присваиваются выбранные на тот момент дата и время.

Для того чтобы Windows 95 и NT4 поддерживали элементы управления DateTime, в них должны быть установлены версии DLL не старее, чем те, которые поставляются с Internet Explorer 3.0.

Опции DateTime:

Choose: см. выше.

Range: устанавливает диапазон, ограничивающий выбор дат в прошлом и будущем. После слова Range задайте минимальную и максимальную даты в формате YYYYMMDD (разделенные тире). Например, если задать Range20050101-20050615, выбор дат будет ограничен первыми пятью с половиной месяцами 2005 года. Можно снять ограничение с нижней или верхней границы. Например, Range20010101 не разрешит выбирать даты раньше 2001 года, а Range-20091231 (с тире впереди) – позднее 2009 года. Если опция Range не задана, разрешается выбирать любую дату в диапазоне от 1601 по 9999 год. Выбор времени суток ограничить нельзя.

Right: если задана эта опция, календарь будет выпадать не с левой, а с правой стороны.

1: задайте в опциях число 1 для того, чтобы заменить выпадающий календарь элементом управления Up-down. Он будет расположен в правой части элемента управления DateTime и позволит изменять значения даты-времени.

2: задайте в опциях число 2 для того, чтобы создать внутри элемента управления флажок. Снятая галочка будет означать, что дата/время не выбраны. После создания элемента управления, данную опцию изменить нельзя.

MonthCal [в версиях 1.0.35 и выше] (календарь)

Описание: MonthCal представляет собой довольно большой по размерам элемент управления, который отображает дни месяца в календарном формате и позволяет выбирать одну дату или диапазон дат. Пример:

Gui, Add, MonthCal, vMyCalendar

Для того чтобы по умолчанию была выбрана дата, отличная от текущей, задайте ее в формате YYYYMMDD в качестве последнего параметра (например, 20050531). Таким же образом можно задать диапазон дат. Для этого между двумя датами необходимо поставить тире (например, 20050525-20050531).

Как правило, задавать ширину (W) и высоту (H) элемента управления MonthCal необходимости нет - они подбираются автоматически так, чтобы уместился календарь на один месяц. Для отображения нескольких месяцев по вертикали, задайте в опциях R2, или R3, или R4, и т.д. (число соответствует количеству месяцев). Для того чтобы отобразить несколько месяцев по горизонтали, задайте W-2 (W минус два), где число также соответствует количеству месяцев. Можно задать обе опции, и тогда календарь расширится в обоих направлениях.

Чтобы выбрать дату текущего дня, можно щелкнуть по строке в нижней части элемента управления. Кроме того, щелчки по году и названию месяца позволяют выбирать их новые значения.

В отличие от выпадающего календаря элемента управления DateTime, в MonthCal навигация с помощью клавиатуры как правило не поддерживается.

При использовании команды Gui Submit выходной переменной, ассоциированной с элементом управления (если таковая существует), присваивается выбранная дата в формате YYYYMMDD (без времени). Однако если для календаря действует опция множественного выбора, выходной переменной присваивается строка, состоящая из минимальной и максимальной даты, и тире между ними (например, 20050101-20050108). Если при этом в календаре была выбрана только одна дата, выходной переменной по-прежнему присваиваются минимум и максимум (две даты), только в этом случае эти даты будут равны. Для того чтобы разделить даты, можно воспользоваться командой StringSplit. В следующем примере минимальная дата будет помещена в переменную Date1, а максимальная - в переменную Date2:

StringSplit, Date, MyMonthCal, -

Если для MonthCal задана метка перехода, то при каждом ее запуске выходная переменная, ассоциированная с элементом управления (если таковая существует), обновляется. Ей присваиваются выбранные на тот момент дата или диапазон дат. По умолчанию, метка запускается только в следующих случаях: 1) если пользователь выбрал другую дату (другие даты). 2) каждые 2 минуты, если наступил новый день (подобное поведение является особенностью ОС). Впрочем, если в опциях элемента управления задано слово AltSubmit (в версиях 1.0.35.09 и выше), метка перехода запускается чаще, а встроенной переменной A_GuiControlEvent присваивается:

Например, при двойном щелчке по новому значению даты, метка запустится 5 раз: один раз со значением Normal, дважды - с числом 1 и дважды - с числом 2. Это свойство можно использовать для распознавания двойных щелчков, измеряя время между запусками метки с числом 1.

Если даты задаются в формате YYYYMMDD, то те части, которые представляют собой месяц (MM) и/или дату (DD), можно опустить. В этом случае они будут равны 1. Например, 200205 рассматривается как 20020501, а 2005 - как 20050101.

Для того чтобы Windows 95 и NT4 поддерживали элементы управления MonthCal, в них должны быть установлены версии DLL не старее, чем те, которые поставляются с Internet Explorer 3.0.

Опции MonthCal:

Multi: множественный выбор. Позволяет выбирать диапазон расположенных рядом дат с помощью shift (shift-click) или перетаскиванием (click-drag) (выбор одной даты также возможен). Данную опцию можно задать явно или ввести в действие автоматически, определив желаемый диапазон при создании элемента управления. Например: Gui, Add, MonthCal, vMyCal, 20050101-20050108. После создания элемента управления данную опцию изменить нельзя.

Range: ограничивает календарь некоторой минимальной датой в прошлом и максимальной - в будущем. После слова Range задайте минимальную и максимальную даты в формате YYYYMMDD (разделенные тире). Например, если задать Range20050101-20050615, выбор будет ограничен первыми пятью с половиной месяцами 2005 года. Можно снять ограничение с нижней или верхней границы. Например, Range20010101 не разрешит выбирать даты раньше 2001 года, а Range-20091231 (с тире впереди) - позднее 2009 года. Если опция Range не задана, разрешается выбирать любую дату в диапазоне от 1601 до 9999 года.

4: задайте в опциях число 4, чтобы слева от каждого ряда дат был показан номер недели (1-52). Неделей №1 считается первая неделя года, содержащая не менее четырех дней.

8: задайте в опциях число 8, чтобы запретить обведение текущей даты рамкой.

16: задайте в опциях число 16, чтобы запретить отображение текущей даты в нижней части элемента управления.

Slider (ползунок)

Описание: элемент управления Slider представляет собой ползунок, который можно перемещать вдоль горизонтальной или вертикальной направляющей. Примером ползунка является стандартный регулятор громкости в трее на панели задач. Пример:

Gui, Add, Slider, vMySlider, 50

Задайте в качестве последнего параметра начальную позицию ползунка. Если последний параметр пропущен, ползунок по умолчанию устанавливается на нулевую отметку или на ближайшую к нулю отметку в разрешенном диапазоне.

Передвигать ползунок можно следующими способами: 1) перетаскиванием с помощью мыши; 2) щелчком по направляющей; 3) прокручиванием колесика мыши, когда элемент управления находится в фокусе; 4) нажатием следующих клавиш (элемент управления - в фокусе): клавиш со стрелками, Page-up, Page-down, Home и End.

При использовании команды Gui Submit ассоциированная с элементом управления выходная переменная (если таковая существует) принимает текущую числовую позицию ползунка. Эта позиция также сохраняется в выходной переменной при каждом запуске метки перехода.

Если ползунок имеет метку перехода, по умолчанию она запускается только после остановки движения ползунка (например, при отпускании кнопки мыши после его перетаскивания). Однако если в опциях задано слово AltSubmit, метка перехода запускается для всех событий ползунка, а встроенной переменной A_GuiControlEvent присваивается одно из приведенных ниже значений (число или строка):

0: Пользователь нажал клавишу со стрелкой влево или вверх (Left-arrow или Up-arrow).

1: Пользователь нажал клавишу со стрелкой вправо или вниз (Right-arrow или Down-arrow).

2: Пользователь нажал клавишу Page-up.

3: Пользователь нажал клавишу Page-down.

4: Пользователь передвинул ползунок с помощью колесика мыши или завершил его перетаскивание на новую позицию.

5: В данный момент пользователь перетаскивает ползунок с помощью мыши, то есть кнопка мыши нажата.

6: Пользователь нажал клавишу Home, чтобы передвинуть ползунок к левому или верхнему краю направляющей.

7: Пользователь нажал клавишу End, чтобы передвинуть ползунок к правому или нижнему краю направляющей.

Normal: Пользователь закончил перемещать ползунок с помощью мыши, либо с помощью клавиатуры. Примечание: за исключением прокручивания колесика мыши (4), метка перехода запускается снова для события "normal" даже в том случае, если ранее она уже запускалась для одного из событий-цифр.

Опции Slider:

Buddy1 и Buddy2: каждая из этих двух опций автоматически размещает рядом с ползунком указанный существующий элемент управления. Buddy1 отображается слева или сверху (зависит от наличия опции Vertical). Buddy2 отображается справа или снизу. После слов Buddy1 или Buddy2 задайте имя переменной существующего элемента управления. Например, опция Buddy1MyTopText задаст элемент управления с именем переменной MyTopText. В Windows 95 и NT4 данная опция поддерживается при наличии Internet Explorer версии 3.0 или выше.

Center: делает ползунок (передвигаемый брусочек) тупым с обоих концов, а не острым с одной стороны.

Invert: переворачивает элемент управления так, что меньшее значение оказывается не слева/внизу, а справа/вверху. Как правило, эта опция используется для того, чтобы вертикальный ползунок двигался в том же направлении, что и традиционный регулятор громкости. Примечание: опция ToolTip, о которой идет речь ниже, не подчиняется такой перестановке и, следовательно, здесь не используется.

Left: направляет острие ползунка (передвигаемого брусочка) вверх. Однако если действует опция Vertical, ползунок будет указывать налево.

Line: задает количество позиций, на которое будет передвигаться ползунок при нажатии одной из клавиш со стрелками. После слова Line задайте количество позиций. Например: Line2.

NoTicks: отменяет отображение временных отметок.

Page: задает количество позиций, на которое будет передвигаться ползунок при нажатии клавиш Page-up или Page-down. После слова Page задайте количество позиций. Например: Page10.

Range: задает диапазон, отличный от 0-100. После слова Range задайте нижнюю и верхнюю границы диапазона, разделенные тире. Например, Range1-1000 позволит выбрать число в диапазоне от 1 до 1000, Range-50-50 -- от -50 до 50, а Range-10--5 - от -10 до -5.

Thick: задает величину ползунка (передвигаемого брусочка). После слова Thick задайте толщину ползунка в пикселях (например: Thick30). Чтобы превысить определенную толщину ползунка, в Windows XP или более поздних операционных системах может понадобиться задать опцию Center или проигнорировать тему в элементе управления (что можно сделать, если задать -Theme в опциях элемента управления).

TickInterval: отображает временные отметки через заданный интервал. После слова TickInterval задайте необходимый интервал (если опция опущена, интервал по умолчанию равен 1). Например, опция TickInterval10 отобразит временные отметки через каждые 10 позиций.

ToolTip: создает при перемещении ползунка всплывающую подсказку, отображающую его текущую позицию. Для того чтобы подсказка появлялась в месте, отличном от места по умолчанию, задайте один из приведенных далее вариантов опции: ToolTipLeft или ToolTipRight (для горизонтальных ползунков); ToolTipTop или ToolTipBottom (для вертикальных ползунков). В Windows 95 и NT4 данная опция поддерживается при наличии Internet Explorer версии 3.0 или выше.

Vertical: создает вертикальный ползунок.

Все описанные выше опции можно изменить при помощи команды GuiControl уже после создания элемента управления.

Progress (индикатор прогресса)

Описание: элемент управления Progress представляет собой двухцветную панель, которая используется, как правило, для индикации времени (в процентах), оставшегося до окончания выполнения операции. Пример:

Gui, Add, Progress, w300 h20 cBlue

Задайте начальную позицию индикатора в качестве последнего параметра (если данный параметр опущен, индикатор по умолчанию устанавливается на 0 или на ближайшее к нулю число в разрешенном диапазоне). Как позднее изменить позицию индикатора, показано в примерах, приведенных далее. Все примеры оперируют с индикатором прогресса, с которым ассоциирована переменная с именем MyProgress:

GuiControl,, MyProgress, +20 ; Прибавляем к текущей позиции 20.
GuiControl,, MyProgress, 50 ; Устанавливаем текущую позицию на 50.

В горизонтальном индикаторе прогресса толщина индикатора равна высоте элемента управления. В вертикальном индикаторе прогресса толщина индикатора равна ширине элемента управления.

Опции Progress:

Cn: изменяет цвет индикатора. Задайте в качестве значения n один из 16 основных названий цветов HTML или шестизначный код цвета в формате RGB. Например: cRed, cFFFF33, cDefault. Если опция C не задана (или определена опция cDefault), используется цвет индикатора системы по умолчанию.

BackgroundN: изменяет цвет фона индикатора. Задайте в качестве значения n один из 16 основных названий цветов HTML или шестизначный код цвета в формате RGB. Например: BackgroundGreen, BackgroundFFFF33, BackgroundDefault. Если опция Background не задана (или задана опция BackgroundDefault), цвет фона будет таким же, как у окна или элемента управления "набор вкладок" за ним.

Range: задает диапазон, отличный от 0-100. После слова Range задайте нижнюю и верхнюю границы диапазона, разделенные тире. Например, Range0-1000 позволит выбрать число в диапазоне от 1 до-1000, Range-50-50 -- от -50 до 50, а Range-10--5 - от -10 до -5. В Windows 95 и NT4 отрицательные диапазоны и диапазоны, захватывающие значения от 65535 и выше, функционируют корректно только в том случае, если установлен Internet Explorer версии 3.0 и выше.

-Smooth (минус Smooth): четко разграничивает каждый сегмент, а не отображает непрерывную полосу. Указание опции -Smooth также является одним из требований, если нужно, чтобы внешний вид индикатора прогресса соответствовал выбранной теме в Windows XP или более поздних операционных системах. Еще одним требованием является отсутствие пользовательской окраски индикатора, то есть опции C и Background должны быть опущены. В Windows 95 и NT4 данная опция поддерживается при наличии Internet Explorer версии 3.0 или выше.

Vertical: изменяет индикатор прогресса на вертикальный. В Windows 95 и NT4 данная опция поддерживается при наличии Internet Explorer версии 3.0 или выше.

Все описанные выше опции можно изменить при помощи команды GuiControl уже после создания элемента управления.

GroupBox (рамка группы)

Описание: элемент управления GroupBox представляет собой прямоугольную границу/рамку, часто используемую для того, чтобы показать, что элементы управления, заключенные внутри нее, связаны между собой. Последним параметром здесь является заголовок прямоугольника, отображаемый слева вверху. Пример:

Gui, Add, GroupBox, w400 h300, Географические показатели

Tab (вкладки)

Описание: элемент управления Tab представляет собой довольно крупный элемент управления, содержащий ряд страниц, на каждой из которых находятся другие элементы управления. Далее мы будем называть эти страницы просто "вкладки". Пример:

Gui, Add, Tab,, Основные|Вид|Видимость|Установки

Здесь последним параметром является список названий вкладок, разграниченных символами конвейера. Для того чтобы при первом появлении окна одна из вкладок была открыта по умолчанию, в параметрах после этого пункта нужно поместить двойной символ конвейера. Кроме того, в опциях можно задать слово Choose и сразу же за ним - порядковый номер той вкладки, которая будет выбрана заранее. Например, если задать Choose5, будет открыта пятая вкладка (также можно задать переменную, например, Choose%Var%). Для того чтобы поменять выбранную вкладку, удалить или добавить новую уже после создания элемента управления, воспользуйтесь командой GuiControl.

После создания элемента управления Tab все элементы управления, добавленные позже, автоматически появятся на первой вкладке. Как изменить такое поведение, показано в примерах, приведенных ниже:

Gui, Tab ; Добавленные элементы управления не будут принадлежать ни одной вкладке.
Gui, Tab, 3 ; Добавленные элементы управления появятся на третьей вкладке
; текущего элемента управления "вкладки".
Gui, Tab, 3, 2 ; Добавленные элементы управления появятся на третьей вкладке
; второго элемента управления "вкладки".
Gui, Tab, Name ; Добавленные элементы управления появятся на вкладке,
; заголовок которой начинается с Name (не чувствительно к регистру).
Gui, Tab, Name,, Exact ; То же, что и выше, но заголовок должен быть приведен полностью
; (чувствительно к регистру). [в версиях 1.0.37.03 и выше]

Кроме того, примеры, приведенные выше, можно использовать для назначения элементов управления еще не существующим вкладкам или элементам управления Tab (кроме способа, когда нужно задать заголовок вкладки). Однако в этом случае опции относительного позиционирования, описанные ниже, не поддерживаются.

Позиционирование: когда вкладке назначается ее первый вложенный элемент управления, этот элемент управления занимает особую позицию по умолчанию при следующих условиях: 1) координаты X и Y не заданы. При этом вложенный элемент управления помещается в верхнем левом углу внутренней области элемента управления Tab (со стандартными полями); 2) заданы опции позиционирования X+n и/или Y+n . В этом случае позиция вложенного элемента управления рассчитывается относительно верхнего левого угла внутренней области элемента управления Tab. Например, если задать "x+10 y+10", то элемент управления будет расположен 10 пикселями правее и 10 пикселями ниже верхнего левого угла.

Подчиненные элементы управления не обязательно должны располагаться в пределах границ вкладки: они будут скрываться и вновь отображаться при открытии или закрытии вкладки, на которой расположены. Подобное поведение особенно характерно для стиля "кнопки", о котором рассказывается ниже.

При использовании команды Gui Submit выходной переменной, ассоциированной с элементом управления (если такая переменная существует), присваивается заголовок открытой на этот момент вкладки. Однако если элемент управления имеет свойства AltSubmit, то вместо заголовка выходной переменной будет присвоен номер позиции этой вкладки (номер первой вкладки - 1, второй - 2, и т. д.).

В опциях элемента управления можно поместить метку перехода например, gMySubroutine. Это приведет к тому, что метка будет запускаться каждый раз при открытии новой вкладки. Если для элемента управления Tab заданы как метка перехода, так и выходная переменная, то при открытии новой вкладки выходной переменной будет присвоен заголовок ранее выбранной вкладки (или номер этой вкладки, если элемент управления Tab имеет свойство AltSubmit).

Навигация с помощью клавиатуры: для того, чтобы осуществлять в элементе управления Tab навигацию по страницам, можно использовать комбинации клавиш Control-PageDown/PageUp. Если фокус ввода находится на элементе управления, не принадлежащем элементу управления Tab, навигация будет осуществляться по первому элементу управления Tab окна. Также для навигации можно использовать комбинации Control-Tab и Control-Shift-Tab, однако они не будут действовать, если элементом управления, находящимся на этот момент в фокусе, является многострочный редактируемый элемент управления (Edit control).

В каждом окне может быть не более 255 элементов управления Tab. В каждом элементе управления Tab может быть не более 256 вкладок (страниц).

Опции элемента управления Tab:

Choose: см. выше.

-Background (минус, за которым идет слово background): меняет пользовательский цвет фона окна на системный цвет элемента управления Tab, используемый по умолчанию. В версиях 1.0.32 и выше задайте +Theme -Background, чтобы привести элемент управления Tab в соответствие с текущей темой рабочего стола. Однако большинство типов элементов управления будут выглядеть нелепо внутри подобного элемента управления Tab из-за несоответствия фона. Впрочем, в некоторых элементах управления (таких, как Text) это затруднение можно обойти, задав в опциях BackgroundTrans.

Buttons: вместо вкладок создает в верхней части элемента управления Tab ряд кнопок (при этом границы вкладок, отображаемые по умолчанию, с этой опцией отображаться не будут, так как добавленные элементы управления принадлежат вкладке, а не очерченной границами отображаемой области). [Прим. переводчика: элементы управления принадлежат вкладке потому, что были добавлены в неё, а не потому, что попадают или нет в отображаемые для вкладки границы.]

Left/Right/Bottom: задайте одно из этих слов, чтобы расположить вкладки слева, справа или в нижней части элемента управления. В описании стиля TCS_VERTICAL (см. ссылку в оригинале данной статьи) приведены ограничения по использованию Left и Right.

-Wrap: ограничивает размещение вкладок одним рядом (в этом случае при большом количестве вкладок отображаются кнопки со стрелками, позволяющие осуществлять прокрутку).

StatusBar [в версиях 1.0.44 и выше] (строка состояния)

Описание: элемент управления StatusBar представляет собой строку текста и/или иконки в нижней части окна. StatusBar обычно используется для оповещения об изменении каких-либо условий. Пример:

Gui, Add, StatusBar,, Начальный текст состояния (пропустите, чтобы поле в начале работы осталось пустым).
SB_SetText("Выбрано " . RowCount . " строк.")

Самым простым примером использования строки состояния является вызов функции SB_SetText() в случае, если пользователю необходимо сообщить о том, что что-то изменилось. Если необходимо передать несколько сообщений, строка состояния с помощью функции SB_SetParts() делится на секции. Для того чтобы отобразить в строке состояния иконку(и), вызовите функцию SB_SetIcon().

Все приведенные ниже функции элемента управления StatusBar выполняются в текущем потоке в окне Gui, использующемся по умолчанию. (Окно Gui по умолчанию можно изменить с помощью команды Gui, 2:Default). Если окна по умолчанию не существует или в нем нет строки состояния, то, чтобы обозначить ошибку, все SB-функции возвращают 0.

SB_SetText(NewText [, PartNumber, Style]): отображает новый текст в заданной части строки состояния. Если опущен параметр PartNumber, он по умолчанию принимает значение 1. В противном случае, необходимо задать целое число от 1 до 256. Если опущен параметр Style, он по умолчанию принимает значение 0. При этом в элементе управления используется традиционная граница, при которой эта часть строки состояния кажется "утопленной". В противном случае, задайте 1, чтобы у этой части строки состояния не было границ, или 2, чтобы она казалась приподнятой. И последнее: новый текст может содержать до двух символов табуляции (`t): все, что находится с правой стороны от первого знака табуляции, помещается в центре этой части строки состояния, а все, что находится справа от второго знака табуляции, выравнивается по правому краю. Функция SB_SetText() возвращает 1 в случае успеха и 0 при неудаче.

SB_SetParts([Width1, Width2, ... Width255]): делит строку состояния на несколько секций, согласно заданной ширине (в пикселях). Если все параметры опущены, строка состояния будет состоять из одной длинной части. В противном случае, необходимо задать ширину каждой части за исключением последней (последняя часть займет всю оставшуюся ширину). Например, если задать SB_SetParts(50, 50), будут созданы три части: первые две шириной по 50 пикселей, а последняя часть займет всю оставшуюся ширину. Примечание: если части были "удалены" функцией SB_SetParts() каким-либо способом, то, будучи созданы в дальнейшем еще раз, эти части будут отображены без текста (кроме того, их иконки автоматически уничтожатся). В случае успеха функция SB_SetParts() возвращает значение, отличное от нуля (HWND (описатель окна) строки состояния). В случае неудачи функция возвращает 0.

SB_SetIcon(Filename [, IconNumber, PartNumber]): отображает в заданной части слева от текста маленькую иконку (если параметр PartNumber опущен, то по умолчанию он принимает значение 1). Параметром Filename является имя файла иконки (.ICO), курсора (.CUR) или анимированного курсора (.ANI) (анимация в анимированных курсорах не поддерживается). Другими источниками иконок являются следующие типы файлов: EXE, DLL, CPL, SCR, а также и другие типы файлов, содержащих иконки. Для того чтобы использовать какую-либо группу иконок помимо первой, необходимо задать номер этой группы в качестве параметра IconNumber. Например, если задать SB_SetIcon("Shell32.dll", 2), то будет использована иконка по умолчанию из второй группы. В случае успеха функция SB_SetIcon() возвращает HICON иконки, при неудаче - 0. HICON представляет собой системный ресурс, который может быть без риска проигнорирован большинством скриптов, поскольку автоматически разрушается при разрушении окна строки состояния. Подобным образом разрушается старая иконка, когда функция SB_SetIcon() заменяет ее новой. Этого можно избежать с помощью:

Gui +LastFound
SendMessage, 0x40F, part_number - 1, my_hIcon, msctls_statusbar321 ; 0x40F = SB_SETICON.

Уведомления о метках перехода: метку перехода, например, gMySubroutine, можно поместить в опциях элемента управления. Это приведет к тому, что метка будет автоматически запускаться при каждом щелчке пользователя по строке состояния. Подпрограмма может обращаться ко встроенным переменным A_Gui и A_GuiControl. Более того, она может обращаться ко встроенной переменной A_GuiEvent, содержащей одну из приведенных далее строк (чтобы обеспечить совместимость скрипта с будущими версиями AutoHotkey, не следует исходить из того, что эти значения являются единственно возможными).

Шрифт и цвет: хотя размер, гарнитуру и начертание шрифта можно задать с помощью команды "Gui Font" (как в обычных элементах управления), цвет текста изменить нельзя. Также не действует команда "Gui Color". Вместо этого, цвет фона строки состояния можно изменить, задав в опциях слово Background, после которого - название цвета (см. таблицу цветов) или значение RGB (префикс 0x - опциональный). Например: BackgroundSilver, BackgroundFFDD99, BackgroundDefault.

Как скрыть строку состояния: при создании строку состояния можно скрыть с помощью команды Gui, Add, StatusBar, Hidden vMyStatusBar. Для того, чтобы скрыть строку состояния после ее создания, используйте команду GuiControl, Hide, MyStatusBar. Чтобы отобразить строку состояния, используйте команду GuiControl, Show, MyStatusBar. Примечание: скрытая строка состояния не уменьшает высоту окна. Есть еще один простой способ отобразить строку состояния - с помощью команды Gui, Show, AutoSize.

Стили (используются редко): см. таблицу стилей StatusBar по ссылке в оригинале данной статьи.

Известные ограничения: 1) Иногда элементы управления, частично пересекающиеся со строкой состояния, перекрывают ее сверху. Единственным способом избежать этого является уменьшение этих элементов управления через метку GuiSize. 2) В окне может быть только одна строка состояния.

Пример: в конце статьи TreeView (см. ссылку в оригинале данной статьи) приводится пример со строкой состояния, состоящей из нескольких частей.

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.