Writing Scripts

 

Написание скриптов

Существует ряд ключевых понятий и терминов, относящихся к написанию скриптов:

  • Процессы — это строки команд, которые можно использовать для выполнения команд в скриптах.
  • Компоненты — это визуальные элементы управления на панели Tool Palette panel, которые можно перетаскивать на форму скрипта для управления проектом.
  • Компонент, размещённый на форме скрипта, имеет методы, свойства и события.
  • Объектные интерфейсы — это специальные объектные интерфейсы, которые можно использовать для извлечения и изменения данных в проектных документах из ваших скриптов.

Языки скриптов

Язык скриптов по умолчанию установлен как DelphiScript (*.pas). Сам движок скриптов написан на Embarcadero Delphi, а панель Tool Palette основана на VCL (Visual Component Library) Delphi.

  • Вы можете открывать и запускать существующие скрипты, написанные на VBScript и JavaScript (Jscript). Чтобы иметь возможность создавать новые скрипты на VBScript, необходимо включить параметр Legacy.Scripts.SupportOldLanguages в диалоговом окне Advanced Settings dialog.

  • Документацию по API скриптинга можно найти здесь: Scripting API Objects. Обратите внимание, что эта документация в последний раз обновлялась для более старой версии Altium Designer. Хотя многие принципы и подходы останутся теми же, имейте в виду, что интерфейсы, объекты, методы, свойства и т. п. с тех пор изменились и не отражают полный набор, доступный в более поздних версиях ПО.

Модуль DelphiScript

Быстрое и базовое упражнение по скриптингу можно выполнить, сначала создав новый проект и файл скрипта. Предполагая, что проект и файл скрипта настроены на язык DelphiScript, можно ввести простой скрипт «Hello World», как показано ниже.

Procedure ShowAMessage;
Var
 DefaultMessage;
Begin
 DefaultMessage := 'Hello World!';
 ShowMessage(DefaultMessage);
End;
При редактировании документа рядом с документом скрипта появляется звёздочка, а значок на панели Projects panel становится красным. При редактировании строки кода скрипта в левом поле строки появляется красный блок, указывающий, что строка была изменена.

Внутри процедуры используется стандартная функция DelphiScript ShowMessage, которая открывает диалоговое окно с сообщением «Hello World», заданным переменной DefaultMessage.

Поскольку в скриптах все переменные имеют тип variant, нет необходимости задавать тип переменной DefaultMessage в скрипте.

Запуск скрипта

Чтобы запустить один из скриптов, выберите File » Run Script в главном меню, затем выберите доступную процедуру скрипта в диалоговом окне Select Item To Run. При запуске откроется диалоговое окно для отображения сообщения.

Запуск простого модуля скрипта HelloWorld из меню File » Run Script.
Запуск простого модуля скрипта HelloWorld из меню File » Run Script.

Этот скрипт содержит процедуру без параметров. В диалоговом окне Select Item To Run отображаются только процедуры или функции, которые don't имеют параметры. Процедуры, которым требуется передача параметров, вызываются изнутри скрипта (или из другого скрипта), но не из внешней системы, такой как диалоговое окно Select Item To Run, где параметры не передаются.

Скрипт также можно выполнить с помощью команды Run редактора, доступной через кнопку Run (), сочетание клавиш F9 или выбором Run » Run в главном меню.

Помимо самой команды 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 в главном меню.

После создания нового проекта скрипта добавьте в проект новый скрипт. После создания нового проекта скрипта добавьте в проект новый скрипт.

Форма скрипта создаёт два файла: файл *.dfm, который определяет элементы окна формы и дескрипторы, и файл *.pas, который содержит обработчики событий формы, а также процедуры или функции.

Чтобы просматривать и редактировать значения свойств для формы (или её компонентов), находящихся в фокусе, откройте панель Object Inspector. Панель Object Inspector используется для изменения свойств формы и вставки кода в обработчики событий, связанные с текущей формой.

Конфигурация окна и свойства формы скрипта показаны на панели Object Inspector.
Конфигурация окна и свойства формы скрипта показаны на панели Object Inspector.

Обратите внимание, что у формы скрипта внизу документа есть две вкладки: Code и Form .

Вкладка Code содержит обработчики событий и процедуры, как показано выше, тогда как вкладка Form представляет диалоговое окно и содержит элементы управления и связанные с ними обработчики событий. Используйте вкладки или сочетание клавиш F12, чтобы переключаться между ними.

Термины «диалог» и «форма скрипта» в данном руководстве описательно эквивалентны. Термин «форма» относится к окну, которое проектируется в реальном времени в системе скриптинга, а «диалог» — это активная форма в ПО, ожидающая действий пользователя и выполняющая действие, когда нажата кнопка диалога или элемент управления.

Панель Object Inspector позволяет просматривать и редактировать свойства и события компонентов в активной форме скрипта. Щелчок по отдельному компоненту на активной форме скрипта в окне редактора дизайна выделит компонент и отобразит связанные с ним атрибуты на панели Object Inspector. Либо используйте раскрывающееся поле в верхней части панели, чтобы выбрать компонент из списка всех компонентов, размещённых на активной форме. Сама форма также включена в список.

Используйте панель Object Inspector для настройки диалогового окна формы и его действий. 
Используйте панель Object Inspector для настройки диалогового окна формы и его действий.

Информация отображается на двух вкладках — Properties и Events:

  • Вкладка Properties панели содержит список всех атрибутов свойств для выбранного компонента. Точный список доступных атрибутов зависит от конкретного типа компонента, который сейчас рассматривается. Свойство — это характеристика объекта, влияющая либо на его видимое поведение, либо на его работу. Например, свойство Visible (в подкатегории Behavior ) определяет, отображается ли объект на форме скрипта, на которой он размещён. Свойства компонента можно изменять по мере необходимости. Щёлкните в поле справа от свойства и либо вводите значение напрямую, либо переключайте флажок, либо выбирайте пункт из раскрывающегося списка — в зависимости от ситуации.
  • Вкладка Events панели предоставляет список всех событий, на которые может реагировать выбранный компонент. И снова, точный список доступных событий зависит от конкретного типа компонента, который сейчас рассматривается. Когда происходит событие, например нажатие кнопки на форме, скрипт выполнит соответствующее действие при условии, что в коде определена процедура обработки этого события. Такой тип процедуры называется обработчиком события.

Каркас обработчика события можно добавить в код документа скрипта прямо из панели Object Inspector. Просто выберите компонент, для которого нужно определить событие, выберите тип события и затем дважды щёлкните в поле справа от события. Будет создано имя события и использовано при определении имени процедуры обработки события — FormName.EventName. Затем каркасный код процедуры обработки события добавляется в основной код скрипта, который становится активной вкладкой в рабочей области. После этого можно дописать обработчик события, чтобы обеспечить нужную реакцию при возникновении события, обнаруженного выполняющимся скриптом.

Нижняя часть панели содержит краткое описание выбранного свойства или события (если доступно).

Можно одновременно выбрать и редактировать несколько компонентов. В панели будут отображаться те свойства/события, которые являются общими для всех компонентов в выделении. Свойства/события, значения которых различаются между компонентами, будут показаны пустыми. Просто отредактируйте свойства и/или события по необходимости — внесённые изменения сразу применятся к каждому компоненту в выделении. Например, может потребоваться изменить шрифт текста на нескольких кнопках. Выберите все кнопки и измените свойства в категории Font — все кнопки будут обновлены и начнут отображать текст одним и тем же шрифтом.

Для этого скрипта формы измените свойства Caption формы на панели Object Inspector с HelloWorldForm на Hello World!. Эти строки соответствуют тем, что используются в примере обработчика события и кода процедур, приведённом ниже.

Более подробную информацию о компонентах и их свойствах, методах и событиях см. на странице Component Categories.

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

При настроенной базовой форме в диалог можно добавлять элементы управления по мере необходимости, обращаясь к панели Tool Palette. Панель Tool Palette, основанная на Delphi Visual Component Library, представляет собой палитру компонентов, предлагающую широкий набор элементов управления окнами, организованных по категориям компонентов (подробнее см. страницы  Scripting Graphical Components and  Component Categories).

Разделы панели  Tool Palette можно разворачивать и сворачивать с помощью вкладок заголовков областей.
Разделы панели Tool Palette можно разворачивать и сворачивать с помощью вкладок заголовков областей.

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

Все компоненты, используемые на панели, являются производными от TComponent в Borland Delphi Visual Component Library.

Для диалоговой версии проекта «Hello World» на форме есть две кнопки — Display и Close. Щелкните TButton в области Standard панели Tool Palette.

Сделайте это дважды, чтобы разместить на форме две кнопки. Одна кнопка будет использоваться для отображения сообщения «Hello World!» в отдельном диалоге, а вторая — для закрытия основного диалога.

Компоненты можно размещать на скриптовой форме, дважды щелкнув компонент на панели Tool Palette, либо щелкнув компонент один раз, а затем щелкнув на форме в месте, где должен появиться компонент.

Все компоненты на панели имеют связанные Properties, Methods и Events, где:

  • Property — это характеристика объекта, влияющая либо на его видимое поведение, либо на его работу. Например, свойство Visible определяет, может ли объект быть видимым на скриптовой форме.
  • Method — это процедура, всегда связанная с объектом и определяющая поведение этого объекта.
  • An Event — это действие или событие, обнаруживаемое скриптом. В скрипте программист пишет код для каждого обработчика событий (Event Handler), который предназначен для перехвата конкретного события, например щелчка мышью.

Свойства и события компонента можно просматривать и изменять после размещения с помощью панели Object Inspector .

С помощью панели Object Inspector можно изменить конфигурации двух кнопок, заменив их имена и подписи по умолчанию.

Задайте имя первой кнопки как bDisplay, а ее подпись — как Display. Задайте имя второй кнопки как bClose, а ее подпись — как Close. Это нужно, чтобы соответствовать примеру кода обработчика событий, приведенному ниже.

Выберите компонент и отредактируйте его свойства на панели Object Inspector.
Выберите компонент и отредактируйте его свойства на панели Object Inspector.

Поле комментариев в нижней части панели Object Inspector содержит описание выделенного свойства.

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

Код обработчика событий

Двойной щелчок по кнопке Display откроет форму в режиме просмотра кода (Code view) и создаст каркас кода для ее обработчика событий. Либо выберите кнопку, а затем вкладку Events на панели Object Inspector. Двойной щелчок по событию OnClick на панели откроет режим просмотра кода, как описано выше. В режиме просмотра кода оператор ShowMessage можно включить в обработчик событий, как показано в листинге ниже.

Procedure THelloWorldForm.bDisplayClick(Sender: TObject);
Begin
 ShowMessage('Hello World!');
End;
Чтобы просмотреть предопределенные обработчики событий для любого компонента на вашей скриптовой форме, выберите компонент, затем щелкните вкладку Events на панели Object Inspector.
Аналогично обработчик событий для кнопки Close можно определить, сгенерировав событие 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.
Запуск скрипта формы HelloWorld, где кнопка Display активирует диалог ShowMessage.

Панель Object Inspector упрощает изменение свойств и событий модуля формы. Например, чтобы изменить положение формы в рабочей области, используйте панель, чтобы изменить значение poScreenCenter для свойства position формы. Теперь при запуске скрипта диалог будет размещаться по центру экрана рабочего стола.

Эталонную версию скриптов проекта Hello World можно найти в папке Scripts\Delphiscript Scripts\General набора скриптов downloadable. Имейте в виду, что это устаревшие эталонные разработки, и они не обновляются.

Вызов процедуры

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

Это можно продемонстрировать дополнительным разделом кода 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.
Параметрическая процедура в скрипте HelloWorld вызывается из скрипта HelloWorldDialog.

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

Показанный выше вызов скрипта вставляет указанное сообщение в процедуру закрытия формы HelloWoldDialog.
Показанный выше вызов скрипта вставляет указанное сообщение в процедуру закрытия формы HelloWoldDialog.

Если переданный строковый параметр пуст, ShowAParametricMessage(''), отображается сообщение «Hello World!» по умолчанию, как определено в процедуре ShowAParametricMessage.

Список сочетаний клавиш, помогающих упростить процесс написания и отладки скриптов, см. на странице Script Editor Tools.

Просмотр идентификаторов скрипта с помощью панели Code Explorer

Панель Code Explorer предоставляет наглядную сводку всех идентификаторов (переменных, функций и процедур), используемых в активном документе скрипта.

Панель Code Explorer
Панель Code Explorer

Информация об идентификаторах, отображаемая на панели, сгруппирована по следующим папкам верхнего уровня:

  • Procedures & Functions – включает все процедуры и функции, объявленные в активном документе скрипта. Для каждой процедуры/функции также перечисляются любые параметры, передаваемые в процедуру/функцию, или локальные для нее переменные.

  • Variables – включает все глобальные переменные, объявленные в активном документе скрипта.

Если для процедуры/функции объявлены локальные переменные, они будут перечислены в подпапке variables под соответствующей процедурой/функцией. Для различения разных идентификаторов используются уникальные значки:

Процедура

Функция

Параметр процедуры/функции

Переменная (локальная или глобальная)

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

AI-LocalizedЛокализовано с помощью ИИ
Если вы обнаружили проблему, выделите текст/изображение и нажмитеCtrl + Enter, чтобы отправить нам свой отзыв.
Доступность функциональных возможностей

Набор доступных функциональных возможностей зависит от вашего решения Altium – Altium Develop, редакция Altium Agile (Agile Teams или Agile Enterprise) или Altium Designer (на активной подписке).

Если вы не видите в своем ПО функцию, описанную здесь, свяжитесь с отделом продаж Altium, чтобы узнать больше.

Устаревшая документация

Документация Altium Designer больше не разделена по версиям ПО. Если вам необходим доступ к документации по старым версиям Altium Designer, посетите раздел Устаревшая документация на странице Прочие установщики.

Content