Формы и компоненты

Обзор графических компонентов

Система сценариев поддерживает два типа компонентов: визуальные и невизуальные.

Визуальные компоненты используются для построения пользовательского интерфейса, а невизуальные — для решения различных задач, таких как Timer, OpenDialog и MainMenu компоненты.

  • Невизуальный Timer невизуальный компонент может использоваться для запуска определённого кода через заданные промежутки времени, и он никогда не отображается пользователю.
  • Этот Button, Edit и Memo являются визуальными компонентами.

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

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

Характеристика Property — это характеристика объекта, которая влияет либо на видимое поведение, либо на операции этого объекта. Например, свойство Visible определяет, будет ли этот объект виден на форме скрипта или нет.

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

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

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

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

Система скриптов предоставляет ряд компонентов, которые можно использовать для создания сложных пользовательских интерфейсов для скриптов. Чтобы разместить компонент на форме, найдите его значок напанели «Палитра инструментов» и дважды щелкните по нему. Это действие помещает компонент на активную форму. Визуальное представление большинства компонентов настраивается с помощью их свойств. Изначально компонент размещается на форме в положении по умолчанию, но его можно переместить (перетащить) и изменить размер (растянуть) по мере необходимости. Вы также можете изменить размер и положение позже с помощью Object Inspector панели.

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

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

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

На практике все компоненты размещаются на скриптовой форме, и каждое заданное свойство сохраняется в файле, описывающем форму ( *.DFM файл), который связан с соответствующим кодом скрипта ( *.PAS файл). Для каждой скриптовой формы существует .PAS файл и соответствующий ему .DFM файл.

При работе со скриптовой формой и её компонентами все свойства элементов можно просматривать и изменять с помощью панели Object Inspector панели. Вы можете выбрать несколько компонентов, щелкая по ним с нажатой клавишей Shift или перетаскивая прямоугольник выделения вокруг компонентов на форме. Форма скрипта имеет заголовок (свойство Caption свойство на Object Inspector панели).

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

Открыв проект скриптов, щелкните правой кнопкой мыши по проекту на Projects панели, щелкните по Add New to Project элемент во всплывающем контекстном меню и выберите Delphi Script Form пункт. Откроется новая форма скрипта с именем по умолчанию EditScript1.pas.

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

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

ShowModal example:

Procedure RunDialog;
Begin
  DialogForm.ShowModal;
End;

Приведенный ShowModal Приведённый пример демонстрирует очень простой подход к отображению формы скрипта при RunDialog вызывается процедура. Обратите внимание, что значения можно присваивать компонентам DialogForm объекта до того, как DialogForm.ShowModal вызова метода.

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

ModalResult Example:

Procedure TForm.OKButtonClick(Sender: TObject);
Begin
  ModalResult := mrOK;
End;

Procedure TForm.CancelButtonClick(Sender: TObject);
Begin
  ModalResult := mrCancel;
End;

Procedure RunShowModalExample;
Begin
  // Form's Visible property must be false for ShowModal to work correctly.
  If Form.ShowModal = mrOk Then ShowMessage('mrOk');
  If Form.ShowModal = mrCancel Then ShowMessage('mrCancel');
End;
Вы также можете задать значение ModalResult значение mrOk для OK кнопки и mrCancel для Cancel кнопку в их обработчиках событий, чтобы добиться того же результата, что и выше.

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

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

Прием ввода от пользователя

Одним из распространенных компонентов, способных принимать ввод от пользователя, является TEdit . Этот компонент имеет поле, в которое пользователь может вводить строку символов. Обратите внимание, что в Delphi существуют и другие компоненты, такие как TMaskEdit, представляющий собой компонент редактирования с маской ввода, хранящейся в строке — она контролирует или фильтрует вводимые данные.

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

Procedure TScriptForm.ButtonClick(Sender : TObject);
Begin
  If Edit1.Text = '' Then
  Begin
    ShowMessage('Warning - empty input!');
    Exit;
  End;
  // do something else for the input
End;

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

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

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

See also
Проект HelloWorld из Scripts\DelphiScript Scripts\General\ папки коллекции скриптов.
Пример скрипта ShowModal из Scripts\DelphiScript Scripts\General\ папки коллекции скриптов.

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

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

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

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

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

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

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

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

Например, выберите TButton компонент из Tool Palette панели и перетащите его на форму скрипта, затем дважды щелкните рядом с OnClick названии события в Object Inspector панели. Система сценариев переключит фокус на редактор кода и создаст каркас кода для OnClick события.

Если у кнопки есть метод Close метод в CloseClick обработчике события, например, при нажатии на кнопку обработчик события кнопки перехватит OnClick событие, что приведёт к выполнению кода внутри обработчика события. В результате Close метод закроет форму скрипта.

Подводя итог: выберите компонент «Кнопка» либо на форме, либо с помощью панели Object Inspector панели, выберите Events страницу и дважды щелкните по правой стороне OnClick события — в скрипте появится новый обработчик события. В качестве альтернативы дважды щелкните саму кнопку, и система скриптов добавит обработчик для этого OnClick событие. Обратите внимание, что для других типов компонентов предусмотрены другие действия по умолчанию.

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

Чтобы ознакомиться со списком методов компонента, см. документ «Справочник по компонентам ».

Размещение компонентов на форме скрипта

Чтобы использовать в скрипте компоненты из панели «Палитра инструментов», необходимо сначала создать форму скрипта, после чего компоненты можно перетаскивать на эту форму. Как правило, при перетаскивании компонентов на форму скрипта эти объекты не требуют отдельного создания или уничтожения — форма скрипта делает это автоматически.

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

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

Компоненты можно напрямую создавать или уничтожать в скрипте, передавая параметр Nil параметр в Constructor компонента. Обычно нет необходимости передавать дескриптор формы, поскольку скрипт-форма автоматически позаботится об этом. Например, можно создать и уничтожить Open и Save диалоговые окна (TOpenDialog и TSaveDialog классы из Embarcadero Delphi RTL).

Настройка скриптовых форм

Основные моменты настройки форм скриптов:

  • Чтобы форма всегда оставалась поверх других открытых панелей, установите FormStyle свойство в значение fsStayOnTop.
  • Чтобы определить поведение формы по умолчанию, установите FormKind одно из следующих значений: fkNone, fkNormal, fkServerPanel или fkModal.
  • Если fkModal закрыта, то форма будет модальной — то есть будет ждать ввода пользователя, прежде чем продолжить, например, закрыть форму. Если fkServerPanel то форма будет отображаться в виде панели сервера. Если fkNormal то форма будет вести себя как обычная немодальная форма.
  • Чтобы удалить стандартные полосы прокрутки формы, измените значение параметра HorzScrollBar и VertScrollBar .
  • Чтобы сделать форму MDI-фреймом или MDI-дочерним элементом, используйте FormStyle .
  • Чтобы изменить стиль рамки формы, используйте свойство BorderIcons и BorderStyle (результаты видны во время выполнения).
  • Чтобы изменить значок свернутой формы, используйте свойство Icon свойство.
  • Чтобы указать начальное положение формы в окне приложения, используйте свойство Position свойство.
  • Чтобы задать начальное состояние формы (например, свернутое, развернутое или обычное), используйте WindowState свойство.
  • Чтобы определить рабочую область формы во время выполнения, используйте ClientHeight и ClientWidth (обратите внимание, что ClientHeight и ClientWidth обозначают область внутри границ формы; Height а Width обозначают всю область формы).
  • Чтобы указать, какой элемент управления будет иметь начальный фокус в форме во время выполнения, используйте свойство ActiveControl свойство.
  • Чтобы передавать все события клавиатуры в форму, независимо от выбранного элемента управления, используйте свойство KeyPreview свойство.
  • Чтобы указать конкретное меню, если форма содержит более одного меню, используйте Menu свойство.

Обновление скриптовых форм и компонентов

Когда содержимое скриптовой формы устаревает (например, элементы управления не обновляются или не перерисовываются), они могут выглядеть «зависшими» или повреждёнными — это может быть вызвано интенсивной фоновой обработкой данного скрипта.

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

StatusBar component and its Update method Example:

Procedure TConverterForm.loadbuttonClick(Sender: TObject);
Begin
 If OpenPictureDialog1.Execute then
 Begin
 XPProgressBar1.Position := 0;
 XStatusBar1.SimpleText  := '  Loading...';
 XStatusBar1.Update;
 
 // loading a monochrome bitmap only
 Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
 
 // Check if image is monochrome, otherwise prompt a warning
 If Image1.Picture.Bitmap.PixelFormat > pf1bit Then
 Begin
 ShowWarning('The image is not a monochrome!');
 Close;
 End;
 
 lImageSize.Caption := IntToStr(Image1.Picture.Width) + ' x ' +
 IntToStr(Image1.Picture.Height) + ' mils';
 
 convertbutton.Enabled  := True;
 LoadButton.Enabled     := False;
 XStatusBar1.SimpleText := '  Ready...';
 XStatusBar1.Update;
 End;
End;

Приведённый выше фрагмент кода взят из PCB Logo Creator проекта скриптов, который можно найти в Scripts\Delphiscript Scripts\Pcb\PCB Logo Creator папке коллекции скриптов, доступной для скачивания.

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

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

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

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

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

Content