Writing Scripts
Написание скриптов
Существует ряд ключевых понятий и терминов, относящихся к написанию скриптов:
- Процессы — это строки команд, которые можно использовать для выполнения команд в скриптах.
- Компоненты — это визуальные элементы управления на панели Tool Palette panel, которые можно перетаскивать на форму скрипта для управления проектом.
- Компонент, размещённый на форме скрипта, имеет методы, свойства и события.
- Объектные интерфейсы — это специальные объектные интерфейсы, которые можно использовать для извлечения и изменения данных в проектных документах из ваших скриптов.
Языки скриптов
Язык скриптов по умолчанию установлен как DelphiScript (*.pas). Сам движок скриптов написан на Embarcadero Delphi, а панель Tool Palette основана на VCL (Visual Component Library) Delphi.
Модуль DelphiScript
Быстрое и базовое упражнение по скриптингу можно выполнить, сначала создав новый проект и файл скрипта. Предполагая, что проект и файл скрипта настроены на язык DelphiScript, можно ввести простой скрипт «Hello World», как показано ниже.
Procedure ShowAMessage;
Var
DefaultMessage;
Begin
DefaultMessage := 'Hello World!';
ShowMessage(DefaultMessage);
End;
Внутри процедуры используется стандартная функция DelphiScript ShowMessage, которая открывает диалоговое окно с сообщением «Hello World», заданным переменной DefaultMessage.
Запуск скрипта
Чтобы запустить один из скриптов, выберите File » Run Script в главном меню, затем выберите доступную процедуру скрипта в диалоговом окне Select Item To Run. При запуске откроется диалоговое окно для отображения сообщения.

Запуск простого модуля скрипта HelloWorld из меню File » Run Script.
Скрипт также можно выполнить с помощью команды Run редактора, доступной через кнопку Run , сочетание клавиш F9 или выбором Run » Run в главном меню.
Помимо самой команды Run, раскрывающееся меню Run предлагает набор команд управления скриптом и отладки.
Когда команда Run выбирается впервые, откроется диалоговое окно Select Item to Run, позволяющее указать главную процедуру скрипта (ShowAMessage в данном случае). После задания скрипт легко многократно запускать из редактора с помощью команды Run . Используйте Run » Set Project Startup Procedure, чтобы изменить настройку на другую процедуру, либо закройте и снова откройте проект скрипта, чтобы сбросить настройку.
Чтобы остановить выполняющийся скрипт, используйте кнопку Stop , выберите Run » Stop в главном меню или используйте сочетание клавиш Ctrl+F3.
Форма DelphiScript
Развивая проект HelloWorld, созданный выше, можно создать аналогичный скрипт с использованием модуля формы.
Форма скрипта — это диалоговое окно, которое может содержать различные элементы управления, такие как кнопки, многострочные поля и списки. У неё есть обработчики событий, которые срабатывают, когда элемент управления генерирует событие, например при нажатии кнопки.
Чтобы создать новую форму скрипта, щёлкните правой кнопкой мыши по имени проекта на панели Projects panel, выберите параметр Add New to Project и затем Script Form. Скрипт можно сохранить и переименовать через File » Save As в главном меню.
После создания нового проекта скрипта добавьте в проект новый скрипт.
Чтобы просматривать и редактировать значения свойств для формы (или её компонентов), находящихся в фокусе, откройте панель Object Inspector. Панель Object Inspector используется для изменения свойств формы и вставки кода в обработчики событий, связанные с текущей формой.

Конфигурация окна и свойства формы скрипта показаны на панели Object Inspector.
Обратите внимание, что у формы скрипта внизу документа есть две вкладки: Code и Form .
Вкладка Code содержит обработчики событий и процедуры, как показано выше, тогда как вкладка Form представляет диалоговое окно и содержит элементы управления и связанные с ними обработчики событий. Используйте вкладки или сочетание клавиш F12, чтобы переключаться между ними.
Панель Object Inspector позволяет просматривать и редактировать свойства и события компонентов в активной форме скрипта. Щелчок по отдельному компоненту на активной форме скрипта в окне редактора дизайна выделит компонент и отобразит связанные с ним атрибуты на панели Object Inspector. Либо используйте раскрывающееся поле в верхней части панели, чтобы выбрать компонент из списка всех компонентов, размещённых на активной форме. Сама форма также включена в список.

Используйте панель Object Inspector для настройки диалогового окна формы и его действий.
Информация отображается на двух вкладках — Properties и Events:
- Вкладка Properties панели содержит список всех атрибутов свойств для выбранного компонента. Точный список доступных атрибутов зависит от конкретного типа компонента, который сейчас рассматривается. Свойство — это характеристика объекта, влияющая либо на его видимое поведение, либо на его работу. Например, свойство Visible (в подкатегории Behavior ) определяет, отображается ли объект на форме скрипта, на которой он размещён. Свойства компонента можно изменять по мере необходимости. Щёлкните в поле справа от свойства и либо вводите значение напрямую, либо переключайте флажок, либо выбирайте пункт из раскрывающегося списка — в зависимости от ситуации.
- Вкладка Events панели предоставляет список всех событий, на которые может реагировать выбранный компонент. И снова, точный список доступных событий зависит от конкретного типа компонента, который сейчас рассматривается. Когда происходит событие, например нажатие кнопки на форме, скрипт выполнит соответствующее действие при условии, что в коде определена процедура обработки этого события. Такой тип процедуры называется обработчиком события.
Каркас обработчика события можно добавить в код документа скрипта прямо из панели Object Inspector. Просто выберите компонент, для которого нужно определить событие, выберите тип события и затем дважды щёлкните в поле справа от события. Будет создано имя события и использовано при определении имени процедуры обработки события — FormName.EventName. Затем каркасный код процедуры обработки события добавляется в основной код скрипта, который становится активной вкладкой в рабочей области. После этого можно дописать обработчик события, чтобы обеспечить нужную реакцию при возникновении события, обнаруженного выполняющимся скриптом.
Нижняя часть панели содержит краткое описание выбранного свойства или события (если доступно).
Для этого скрипта формы измените свойства Caption формы на панели Object Inspector с HelloWorldForm на Hello World!. Эти строки соответствуют тем, что используются в примере обработчика события и кода процедур, приведённом ниже.
Добавление и настройка элементов управления
При настроенной базовой форме в диалог можно добавлять элементы управления по мере необходимости, обращаясь к панели Tool Palette. Панель Tool Palette, основанная на Delphi Visual Component Library, представляет собой палитру компонентов, предлагающую широкий набор элементов управления окнами, организованных по категориям компонентов (подробнее см. страницы Scripting Graphical Components and Component Categories).

Разделы панели Tool Palette можно разворачивать и сворачивать с помощью вкладок заголовков областей.
Используйте элементы управления в верхней части панели, названия категорий и контекстное меню (правый клик), чтобы настроить отображение элементов управления на панели: разворачивать/сворачивать категории, менять представление элементов палитры и т. д.
Для диалоговой версии проекта «Hello World» на форме есть две кнопки — Display и Close. Щелкните TButton в области Standard панели Tool Palette.
Сделайте это дважды, чтобы разместить на форме две кнопки. Одна кнопка будет использоваться для отображения сообщения «Hello World!» в отдельном диалоге, а вторая — для закрытия основного диалога.
Все компоненты на панели имеют связанные Properties, Methods и Events, где:
-
A Property — это характеристика объекта, влияющая либо на его видимое поведение, либо на его работу. Например, свойство
Visibleопределяет, может ли объект быть видимым на скриптовой форме. - A Method — это процедура, всегда связанная с объектом и определяющая поведение этого объекта.
- An Event — это действие или событие, обнаруживаемое скриптом. В скрипте программист пишет код для каждого обработчика событий (Event Handler), который предназначен для перехвата конкретного события, например щелчка мышью.
Свойства и события компонента можно просматривать и изменять после размещения с помощью панели Object Inspector .
С помощью панели Object Inspector можно изменить конфигурации двух кнопок, заменив их имена и подписи по умолчанию.
Задайте имя первой кнопки как bDisplay, а ее подпись — как Display. Задайте имя второй кнопки как bClose, а ее подпись — как Close. Это нужно, чтобы соответствовать примеру кода обработчика событий, приведенному ниже.

Выберите компонент и отредактируйте его свойства на панели Object Inspector.
Код обработчика событий можно построить, напрямую обращаясь к элементам управления на форме. В этом примере кнопка Display будет инициировать диалог ShowMessage поверх существующей формы, а действие кнопки Close закроет эту форму.
Код обработчика событий
Двойной щелчок по кнопке Display откроет форму в режиме просмотра кода (Code view) и создаст каркас кода для ее обработчика событий. Либо выберите кнопку, а затем вкладку Events на панели Object Inspector. Двойной щелчок по событию OnClick на панели откроет режим просмотра кода, как описано выше. В режиме просмотра кода оператор ShowMessage можно включить в обработчик событий, как показано в листинге ниже.
Procedure THelloWorldForm.bDisplayClick(Sender: TObject);
Begin
ShowMessage('Hello World!');
End;
OnClick, которое применяет оператор Close (form):
Procedure THelloWorldForm.bCloseClick(Sender: TObject);
Begin
Close;
End;
После определения обработчиков событий в скрипте должна быть процедура, которая будет использоваться как точка входа при вызове диалога из программного обеспечения. Ее добавляют в конец кода скрипта.
Обратите внимание: имя формы — HelloWorldForm, а имя процедуры — RunHelloWorld. Важно, чтобы имена форм в одном и том же скрипте были уникальными, чтобы избежать конфликтов имен форм.
Procedure RunHelloWorld;
Begin
HelloWorldForm.ShowModal;
End;
Скрипт можно сохранить, а затем запустить из главного меню (File» Run Script)), выполнив элемент процедуры RunHelloWorld в записи HelloWorldDialog.
Либо процедуру можно назначить команде/кнопке Run через меню Run » Set Startup Project Procedure.

Запуск скрипта формы HelloWorld, где кнопка Display активирует диалог ShowMessage.
Панель Object Inspector упрощает изменение свойств и событий модуля формы. Например, чтобы изменить положение формы в рабочей области, используйте панель, чтобы изменить значение poScreenCenter для свойства position формы. Теперь при запуске скрипта диалог будет размещаться по центру экрана рабочего стола.
Вызов процедуры
Как упоминалось выше, любой скрипт (использующий тот же набор языка) в рамках проекта имеет доступ к глобальным переменным и процедурам, поэтому процедура в одном скрипте может вызывать другую процедуру в другом скрипте проекта.
Это можно продемонстрировать дополнительным разделом кода ShowAParametricMessage в примере проекта HelloWorld:
Procedure ShowAParametricMessage(S : String);
Var
DefaultMessage;
Begin
DefaultMessage := 'Hello World!';
If S = '' Then ShowMessage(DefaultMessage)
Else ShowMessage(S);
End;
Он задает строковую переменную «S», которую можно передать в процедуру ShowAParametricMessage.
Переданная строка будет отображена с помощью диалоговой функции ShowMessage, тогда как простой метод If-Then-Else приводит к отображению сообщения «Hello World!» по умолчанию, если строка пустая.
Чтобы увидеть это в действии, откройте пример проекта (HelloWorld.PrjScr) и добавьте строку, выделенную серым, в скрипт HelloWorldDialog (не в скрипт HelloWorld), как показано ниже.
...
Procedure THelloWorldForm.bDisplayClick(Sender: TObject);
Begin
Showmessage('Hello World!');
End;
Procedure THelloWorldForm.bCloseClick(Sender: TObject);
Begin
ShowAParametricMessage('Goodbye World');
close;
End;
Procedure RunHelloWorld;
Begin
HelloWorldForm.ShowModal;
End;
...
Когда скрипт HelloWorldDialog запускается и нажимается кнопка Close , из скрипта HelloWorld вызывается глобальная процедура ShowAParametricMessage.

Параметрическая процедура в скрипте HelloWorld вызывается из скрипта HelloWorldDialog.
Вызов передает строку сообщения «Goodbye World» в процедуру ShowAParametricMessage, поэтому это сообщение отображается при нажатии кнопки Close перед закрытием формы.

Показанный выше вызов скрипта вставляет указанное сообщение в процедуру закрытия формы HelloWoldDialog.
Если переданный строковый параметр пуст, ShowAParametricMessage(''), отображается сообщение «Hello World!» по умолчанию, как определено в процедуре ShowAParametricMessage.
Просмотр идентификаторов скрипта с помощью панели Code Explorer
Панель Code Explorer предоставляет наглядную сводку всех идентификаторов (переменных, функций и процедур), используемых в активном документе скрипта.

Панель Code Explorer
Информация об идентификаторах, отображаемая на панели, сгруппирована по следующим папкам верхнего уровня:
-
Procedures & Functions – включает все процедуры и функции, объявленные в активном документе скрипта. Для каждой процедуры/функции также перечисляются любые параметры, передаваемые в процедуру/функцию, или локальные для нее переменные.
-
Variables – включает все глобальные переменные, объявленные в активном документе скрипта.
Если для процедуры/функции объявлены локальные переменные, они будут перечислены в подпапке variables под соответствующей процедурой/функцией. Для различения разных идентификаторов используются уникальные значки:
|
Процедура |
|
Функция |
|
Параметр процедуры/функции |
|
Переменная (локальная или глобальная) |
Двойной щелчок по записи на панели (или выбор записи и нажатие клавиши Enter) выполнит переход к соответствующему участку кода в рабочей области.


