Аннотация

Данное руководство призвано дать общее представление о назначении и принципах работы утилиты Devel. Предполагается, что читатель имеет представление о языке программирования VBScript или о другом объектном языке программирования.

Введение

Утилита Devel представляет собой интерпретатор языка VBScript в его стандартной реализации для ОС Windows, расширенный возможностями по созданию несложных графических интерфейсов. Эти возможности скромны и представляют интерес лишь в том случае, если интерфейс, разработка которого необходима, может быть сведён к одному диалоговому окну*. Другим ограничением является необходимость разместить сценарий целиком в одном файле.

Доступ к диалоговому окну осуществляется через объект* Dialog, существующий в единственном экземпляре. При этом обращаться к свойствам и методам этого объекта можно непосредственно, без указания имени объекта. Так мы в дальнейшем и будем поступать.

Задать текст в заголовке диалогового окна можно при помощи свойства Caption.

Листинг 1

Caption = "Приветствие"

Сохраните сценарий из Листинга 1 в файл с расширением .devel и запустите его. Вы увидите окно, состоящее из заголовка с текстом «Приветствие» и кнопкой закрытия окна.

[Рис. 1]

Как видно, для создания диалогового окна в сценарии Devel не нужно прикладывать никаких усилий.

Добавление элементов управления

Разумеется, от диалогового окна без элементов управления нет никакого толку. Добавление элементов управления в Devel производится при помощи группы методов AddControl, которые имеют такой общий вид:

AddControl name, [value], [width], [height], […]

name задаёт имя элемента управления, по которому к нему можно будет обращаться в дальнейшем. Все остальные параметры являются необязательными, и их можно опускать. В большинстве случаев, однако, нам будет хотеться задать исходное значение элемента управления (например, его текст), передав это значение вторым параметром — value. Параметры width и height задают ширину и высоту элемента управления соответственно.

Попробуем добавить на диалоговое окно метку (Label) и текстовое поле (Text). Для добавления метки применяется метод AddLabel, для текстового поля, по аналогии, — AddText.

Листинг 2

Caption = "Приветствие"
AddLabel "lblName", "Ваше имя:"
AddText "txtName"

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

[Рис. 2]

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

Также обратите внимание на имена, выбранные для элементов управления. Метка, или, как её ещё называют, подпись, относится к текстовому полю, подписывает его, поэтому имена у них совпадают с точностью до префикса: xxxName. Префикс выбирается в соответствии с типом элемента управления.

Управление макетом диалогового окна

Предположим, что мы хотим добавить на диалоговое окно ещё несколько элементов управления, например, кнопки «Привет» и «Пока». Но до сих пор все элементы управления, которые мы добавляли, располагались в одну строку. Если мы хотим, чтобы наши кнопки оказались на следующей строке, нам придётся воспользоваться методом NewLine.

Листинг 3

Caption = "Приветствие"
AddLabel "lblName", "Ваше имя:"
AddText "txtName"
NewLine
AddButton "cmdHello", "Привет"
AddButton "cmdBye", "Пока"

Не забудьте запустить очередную версию программы и посмотреть на добавленные кнопки.

[Рис. 3]

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

Обработка событий

Теперь у нас есть почти полностью готовая программа, выводящая на экран диалоговое окно. Надо вдохнуть в него жизнь, заставить реагировать на нажатия кнопок. Для этого надо подписаться на событие* Click.

Обработчик события имеет следующий вид:

Sub Button_Click
End Sub

Фактически, это обычная подпрограмма языка VBScript, только особым образом названная. Всем, кто знаком с соглашениями VB, такой способ именования хорошо знаком*.

Напишем два обработчика, которые будут выводить сообщение вида «Привет, имя» (кнопка «Привет») и закрывать окно (кнопка «Пока»), соответственно.

Листинг 4

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.

Сноски

  1. Диалоговым окном называется окно фиксированного размера, которое нельзя свернуть или развернуть.
  2. Объектом в объектных языках программирования называется сущность, обладающая состоянием и поведением. Объект является своего рода чёрным ящиком, внутреннее устройство которого нам неизвестно. Рассмотрим в качестве примера автомобиль. Цвет и скорость движения — это свойства объекта, они описывают его состояние. При этом цвет поменять нельзя, а скорость можно поменять, но не напрямую, а, например, нажав педаль акселератора. С нашей точки зрения это действие будет вызовом метода. Методы определяют поведение объекта, изменяя состояние последнего.
  3. Событие, как ясно из названия, это сообщение от объекта, которое посылается им, когда с объектом что-то происходит. События нужны для обратной связи: благодаря им программа может реагировать на нажатие кнопок, закрытие окон и проч. Код, отвечающий за реакцию на событие, должен располагатся в процедуре обработки события (обработчике).
  4. Имя обработчика состоит из двух частей, разделённый знаком подчёркивания. Первая часть — это имя объекта, от которого приходит событие (то самое, которое является первым параметром методов группы AddControl). Вторая часть — это имя самого события.