Данное руководство призвано дать общее представление о назначении и принципах работы утилиты Devel. Предполагается, что читатель имеет представление о языке программирования VBScript или о другом объектном языке программирования.
Утилита Devel представляет собой интерпретатор языка VBScript в его стандартной реализации для ОС Windows, расширенный возможностями по созданию несложных графических интерфейсов. Эти возможности скромны и представляют интерес лишь в том случае, если интерфейс, разработка которого необходима, может быть сведён к одному диалоговому окну*. Другим ограничением является необходимость разместить сценарий целиком в одном файле.
Доступ к диалоговому окну осуществляется через объект* Dialog
, существующий в единственном экземпляре. При этом обращаться к свойствам и методам этого объекта можно непосредственно, без указания имени объекта. Так мы в дальнейшем и будем поступать.
Задать текст в заголовке диалогового окна можно при помощи свойства Caption
.
Caption = "Приветствие"
Сохраните сценарий из Листинга 1 в файл с расширением .devel и запустите его. Вы увидите окно, состоящее из заголовка с текстом «Приветствие» и кнопкой закрытия окна.
Как видно, для создания диалогового окна в сценарии Devel не нужно прикладывать никаких усилий.
Разумеется, от диалогового окна без элементов управления нет никакого толку. Добавление элементов управления в Devel производится при помощи группы методов AddControl
, которые имеют такой общий вид:
AddControl name, [value], [width], [height], […]
name задаёт имя элемента управления, по которому к нему можно будет обращаться в дальнейшем. Все остальные параметры являются необязательными, и их можно опускать. В большинстве случаев, однако, нам будет хотеться задать исходное значение элемента управления (например, его текст), передав это значение вторым параметром — value. Параметры width и height задают ширину и высоту элемента управления соответственно.
Попробуем добавить на диалоговое окно метку (Label
) и текстовое поле (Text
). Для добавления метки применяется метод AddLabel
, для текстового поля, по аналогии, — AddText
.
Caption = "Приветствие" AddLabel "lblName", "Ваше имя:" AddText "txtName"
Снова сохраните и запустите сценарий из Листинга 2. Предполагается, что так вы будете поступать с каждым очередным листингом.
Теперь на диалоговом окне появились надпись и пустое поле для ввода текста. И то, и другое — элементы управления. Обратите внимание, что для метки мы не стали задавать ширину и высоту, а для текстового поля — даже исходное значение. Интерпретатор подставил для пропущенных параметров значения по умолчанию.
Также обратите внимание на имена, выбранные для элементов управления. Метка, или, как её ещё называют, подпись, относится к текстовому полю, подписывает его, поэтому имена у них совпадают с точностью до префикса: xxxName. Префикс выбирается в соответствии с типом элемента управления.
Предположим, что мы хотим добавить на диалоговое окно ещё несколько элементов управления, например, кнопки «Привет» и «Пока». Но до сих пор все элементы управления, которые мы добавляли, располагались в одну строку. Если мы хотим, чтобы наши кнопки оказались на следующей строке, нам придётся воспользоваться методом NewLine
.
Caption = "Приветствие" AddLabel "lblName", "Ваше имя:" AddText "txtName" NewLine AddButton "cmdHello", "Привет" AddButton "cmdBye", "Пока"
Не забудьте запустить очередную версию программы и посмотреть на добавленные кнопки.
Удобно представлять себе элементы управления словами на книжной странице. Слова располагаются на строчках; после перевода строки очередное слово оказывается на следующей строке.
Теперь у нас есть почти полностью готовая программа, выводящая на экран диалоговое окно. Надо вдохнуть в него жизнь, заставить реагировать на нажатия кнопок. Для этого надо подписаться на событие* Click
.
Обработчик события имеет следующий вид:
Sub Button_Click End Sub
Фактически, это обычная подпрограмма языка VBScript, только особым образом названная. Всем, кто знаком с соглашениями VB, такой способ именования хорошо знаком*.
Напишем два обработчика, которые будут выводить сообщение вида «Привет, имя» (кнопка «Привет») и закрывать окно (кнопка «Пока»), соответственно.
Caption = "Приветствие" AddLabel "lblName", "Ваше имя:" AddText "txtName" NewLine AddButton "cmdHello", "Привет" AddButton "cmdBye", "Пока" Sub cmdHello_Click MsgBox "Привет, " & txtName End Sub Sub cmdBye_Click Quit End Sub
Обратите внимание на обращение к объекту Text
через переменную txtName
. Строго говоря, следовало бы написать txtName.Text
, однако свойство Text
является свойством по умолчанию, и может быть опущено.
Метод Quit
объекта Dialog
завершает выполнение сценария.
Помимо рассмотренных здесь возможностей, Devel поддерживает вертикальное расположение элементов (методы BeginBlock
/ EndBlock
), перечисление элементов управления (свойство Controls
), а также создание элементов Canvas
и Report
. См. раздел «Справка».
Программа из Листинга 4: tutorial-med.devel.
AddControl
). Вторая часть — это имя самого события.