Использование компонентов форм на VBScript

Использование компонентов в формах VBScript

Хотя формы и компоненты основаны на Visual Component Library (VCL) Embarcadero Delphi™ , в Altium Designer по-прежнему используется основанный на Delphi Tool Palette для размещения элементов управления (Controls) на форме при работе с VBScript. При этом обработчики событий генерируются, а код пишется на языке VBScript — независимо от «дельфийских» корней форм/компонентов в Altium Designer.

Обзор компонентов

Система скриптинга поддерживает два типа компонентов: визуальные и невизуальные. Визуальные компоненты используются для построения пользовательского интерфейса, а невизуальные — для выполнения различных задач, например функций, предоставляемых компонентами Timer, OpenDialog и MainMenu. Например, невизуальный компонент Timer используется для запуска определённого кода через заданные интервалы времени и никогда не отображается пользователю. Компоненты Button, Edit и Memo — визуальные, то есть видимые пользователю.

Оба типа компонентов присутствуют на этапе проектирования, но невизуальные компоненты не видны во время выполнения. Компоненты с панели Tool Palette являются объектно-ориентированными и имеют следующие три элемента:

  • Свойства
  • События
  • Методы

property — это характеристика объекта, влияющая либо на его видимое поведение, либо на операции, выполняемые этим объектом. Например, свойство Visible определяет, может ли этот объект быть видимым в форме скрипта.

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

method — это процедура, всегда связанная с объектом и определяющая поведение этого объекта.

Все формы скриптов содержат один или несколько компонентов. Компоненты обычно отображают информацию или позволяют пользователю выполнить действие. Например, Label используется для отображения статического текста, поле Edit — для ввода данных, Button — для запуска действий.

На форме можно разместить любую комбинацию компонентов, позволяя пользователю взаимодействовать с ними во время выполнения скрипта (runtime). Задача программиста скрипта — определить, что происходит, когда пользователь нажимает кнопку или изменяет текст в поле Edit.

Система скриптинга предоставляет набор компонентов для создания простых или сложных пользовательских интерфейсов для скриптов. Все компоненты, которые можно разместить на форме, находятся на панели Tool Palette panel.

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

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

Проектирование форм скриптов

Форма скрипта предназначена для взаимодействия с пользователем в среде Altium Designer. Проектирование форм скриптов — основа визуальной разработки в Altium Designer.

Каждый компонент, размещённый на форме скрипта, и каждое установленное свойство сохраняются в файле, описывающем форму (файл *.dfm), и связаны с соответствующим кодом скрипта (файл *.vbs). Поэтому для каждой формы скрипта существует файл *.vbs и соответствующий файл *.dfm.

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

Создание новой формы скрипта

При открытом проекте скрипта щёлкните правой кнопкой мыши по проекту на панели Projects и выберите пункты Add New to Project, затем VB Script Form в контекстных меню. Будет создана новая форма скрипта с именем по умолчанию EditScript1.vbs . Либо в проекте *.PrjPCB выберите команду File » New » Script Files » VB Script Form.

Отображение формы скрипта

Скрипт должен содержать процедуру, которая отображает форму при выполнении формы скрипта в Altium Designer. Внутри этой процедуры для формы вызывается метод ShowModal. Чтобы метод ShowModal формы скрипта работал корректно, свойство Visible должно быть установлено в false (снято).

Пример ShowModal

Sub RunDialog
  DialogForm.ShowModal
End Sub

Приведённый выше пример ShowModal — простой способ отображения формы скрипта при вызове из скрипта диалога RunDialog. Обратите внимание: значения можно присваивать компонентам объекта DialogForm до вызова метода DialogForm.ShowModal.

Пример ModalResult, показанный ниже, более сложный. Его последующие методы используются для кнопок в форме скрипта. Методы скрипта приводят к завершению диалога, когда пользователь нажимает кнопку OK или Cancel, что, в свою очередь, возвращает mrOk или mrCancel соответственно из метода ShowModal.

ModalResult Example

sub bOKButtonClick(Sender)
  ModalResult := mrOK
end sub
 
sub bCancelButtonClick(Sender)
  ModalResult := mrCancel
end sub
 
sub RunShowModalExample
  'Form Visible property must be false for ShowModal to work properly.
  If Form.ShowModal = mrOk     Then ShowMessage("mrOk")
  If Form.ShowModal = mrCancel Then ShowMessage("mrCancel")
end sub

То же самое можно сделать, установив значение ModalResult в mrOk для кнопки OK и в mrCancel для кнопки Cancel в их обработчиках событий. Когда пользователь нажимает любую из кнопок, диалоговое окно закрывается. Нет необходимости вызывать метод Close, потому что когда метод ModalResult установлен, движок скриптов закрывает форму скрипта автоматически.

Обратите внимание: чтобы установить ModalResult формы в cancel при нажатии пользователем клавиши Esc, установите свойство Cancel кнопки Cancel в true (включено) на панели Object Inspector либо вставьте Sender.Cancel := True в обработчик события CancelButtonClick кнопки формы.

Приём пользовательского ввода

Один из распространённых компонентов, принимающих ввод от пользователя, — компонент EditBox. Этот компонент EditBox имеет текстовое поле, в которое пользователь может ввести строку символов. Существуют и другие компоненты, принимающие текст, например masked edit — компонент редактирования с маской ввода в текстовом поле. Маска управляет (фильтрует) ввод и хранится в строке параметра.

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

sub TScriptForm.ButtonClick(Sender)
  If Edit1.Text = "" Then
  ShowMessage("Warning - empty input!")
  Exit
  End
  ' do something else for the input
End sub

Обратите внимание: пользователь может перемещать фокус ввода на форме с помощью клавиши Tab или щёлкнув по другому элементу управления формы.

Реакция на события

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

Написание обработчиков событий

Скрипту может потребоваться реагировать на события, которые могут происходить с компонентом во время выполнения. Событие — это связь между происходящим в Altium Designer (например, нажатием кнопки) и фрагментом кода, который реагирует на это. Реагирующий код — это обработчик события, который изменяет значения свойств и вызывает методы.

Наряду со свойствами у каждого компонента есть набор имён событий. Программист скрипта определяет, как он будет реагировать на действия пользователя в Altium Designer. Например, когда пользователь нажимает кнопку на форме, Altium Designer отправляет сообщение скрипту, и скрипт реагирует на это новое событие — если для кнопки задано событие OnClick, оно будет выполнено.

Все такие компоненты также имеют события получения и потери фокуса. Однако если код для OnEnter и OnExit не задан (OnEnter — элемент управления получает фокус; OnExit — элемент управления теряет фокус), событие будет проигнорировано скриптом.

Свойства компонентов

Чтобы увидеть список свойств компонента, выберите компонент и активируйте вкладку Properties на панели Object Inspector.

События компонентов

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

Например, выберите компонент Button1 на панели Tool Palette, поместите его на форму скрипта и дважды щёлкните рядом с именем события OnClick. Система скриптинга переключится в редактор кода, где будет создан каркас кода для события OnClick. Если в обработчике события CloseClick кнопки есть метод Close, то при нажатии кнопки её обработчик перехватывает событие щелчка, и выполняется код внутри обработчика. То есть метод Close закрывает форму скрипта.

Итак, обработчик события создаётся в скрипте путём выбора компонента на форме (или через панель Object Inspector) и последующего двойного щелчка справа от нужного события (например, OnClick) на вкладке Events инспектора — в скрипте появится соответствующий каркас кода.

Либо при двойном щелчке по кнопке система скриптинга добавит обработчик события OnClick. Для других типов компонентов действия по умолчанию будут совершенно иными.

Методы компонентов

Список методов компонента см. в Component Reference, а за более подробной информацией обращайтесь к документации Embarcadero Delphi.

Создание компонентов во время выполнения

Компоненты можно напрямую создавать и уничтожать в скрипте. Обычно дескриптор формы передавать не требуется, поскольку форма скрипта делает это автоматически — вместо этого передайте параметр Nil в конструктор компонента.

Например, диалоги Open и Save можно создавать и уничтожать (классы TOpenDialog и TSaveDialog как часть Delphi RTL).

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

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

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

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

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

Content