Формы и компоненты
Обзор графических компонентов
Система сценариев поддерживает два типа компонентов: визуальные и невизуальные.
Визуальные компоненты используются для построения пользовательского интерфейса, а невизуальные — для решения различных задач, таких как TimerOpenDialogMainMenu
- Невизуальный
невизуальный компонент может использоваться для запуска определённого кода через заданные промежутки времени, и он никогда не отображается пользователю.Timer - Этот
,Button иEdit являются визуальными компонентами.Memo
Оба типа компонентов отображаются на этапе проектирования, однако невизуальные компоненты не отображаются во время выполнения. Компоненты из панели
- Свойства
- События
- Методы
Характеристика
Событие
A
Все формы скриптов содержат один или несколько компонентов. Компоненты обычно отображают информацию или позволяют пользователю выполнить какое-либо действие. Например, LabelEditButton
На форму можно разместить любую комбинацию компонентов, и во время выполнения скрипта пользователь может взаимодействовать с любым компонентом на форме. Задача программиста — определить, что произойдет, когда пользователь нажмёт кнопку или изменит текст в Edit
Система скриптов предоставляет ряд компонентов, которые можно использовать для создания сложных пользовательских интерфейсов для скриптов. Чтобы разместить компонент на форме, найдите его значок напанели «Палитра инструментов» и дважды щелкните по нему. Это действие помещает компонент на активную форму. Визуальное представление большинства компонентов настраивается с помощью их свойств. Изначально компонент размещается на форме в положении по умолчанию, но его можно переместить (перетащить) и изменить размер (растянуть) по мере необходимости. Вы также можете изменить размер и положение позже с помощью
Когда компонент перетаскивается на форму, система Scripting автоматически генерирует код, необходимый для использования компонента, и обновляет форму скрипта. Для того чтобы компонент на форме работал, необходимо лишь задать свойства и реализовать код обработчика событий, использующий нужные методы.
Проектирование скриптовых форм
Форма скрипта предназначена для взаимодействия с пользователем в данной среде. Проектирование форм скриптов является основой визуальной разработки.
На практике все компоненты размещаются на скриптовой форме, и каждое заданное свойство сохраняется в файле, описывающем форму ( *.DFM*.PAS.PAS.DFM
При работе со скриптовой формой и её компонентами все свойства элементов можно просматривать и изменять с помощью панели Caption
Создание новой формы скрипта
Открыв проект скриптов, щелкните правой кнопкой мыши по проекту на EditScript1.pas
Отображение формы скрипта
Скрипт должен содержать процедуру, которая отображает форму при выполнении скриптной формы. В рамках этой процедуры для формы можно вызвать метод ShowModalVisibleShowModal
Procedure RunDialog; Begin DialogForm.ShowModal; End;
Приведенный ShowModalRunDialogDialogFormDialogForm.ShowModal
Пример ModalResultmrOkmrCancelShowModal
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;
Когда пользователь нажимает любую из кнопок в этой форме скрипта, диалоговое окно закрывается. Нет необходимости вызывать метод CloseModalResult
Обратите внимание: если вы хотите установить для формы ModalResultCancelCancelTrueSender.Cancel := TrueCancelButtonClick
Прием ввода от пользователя
Одним из распространенных компонентов, способных принимать ввод от пользователя, является TEditTMaskEdit
Приведённый ниже пример иллюстрирует процесс, происходящий при нажатии пользователем кнопки после ввода текста в поле редактирования. Если пользователь ничего не ввёл в поле редактирования (поле пустое), обработчик события выдает предупреждающее сообщение.
Procedure TScriptForm.ButtonClick(Sender : TObject); Begin If Edit1.Text = '' Then Begin ShowMessage('Warning - empty input!'); Exit; End; // do something else for the input End;
Обратите внимание, что пользователь может переключить фокус ввода диалогового окна с помощью клавиши
Обработка событий
При нажатии кнопки на форме или компоненте система скриптов реагирует, получая уведомление о событии от Altium Designer и вызывая соответствующий метод обработчика событий.
Проект HelloWorld из Scripts\DelphiScript Scripts\General\
Пример скрипта ShowModal из Scripts\DelphiScript Scripts\General\
Написание обработчиков событий
Каждый компонент в скрипте формы имеет набор имен событий, которые используются обработчиками событий скрипта, определяющими, как скрипт будет реагировать на действия пользователя в Altium Designer. Например, когда пользователь нажимает кнопку на форме, Altium Designer отправляет сообщение скрипту, и скрипт реагирует на это новое событие. Если для кнопки указано событие OnClick
Код для реагирования на события обычно содержится в обработчиках событий DelphiScript, и все компоненты имеют набор событий, на которые они могут реагировать. Например, все компоненты, на которые можно нажать, имеют OnClickOnEnterOnExitOnEnterOnExit
Таким образом, событие представляет собой связь между действием в Altium Designer, например нажатием кнопки, и фрагментом кода, реагирующим на это действие. Код, реагирующий на событие, называется обработчиком событий. Этот код изменяет значения свойств и вызывает методы.
Свойства компонента
Чтобы просмотреть список свойств компонента, выберите компонент и откройте вкладку
События компонента
Чтобы просмотреть список событий, на которые может реагировать компонент, выберите компонент и откройте вкладку
Например, выберите TButtonOnClickOnClick

Если у кнопки есть метод CloseCloseClickOnClickClose
Подводя итог: выберите компонент «Кнопка» либо на форме, либо с помощью панели OnClick
Методы компонентов
Чтобы ознакомиться со списком методов компонента, см. документ «Справочник по компонентам ».
Размещение компонентов на форме скрипта
Чтобы использовать в скрипте компоненты из панели «Палитра инструментов», необходимо сначала создать форму скрипта, после чего компоненты можно перетаскивать на эту форму. Как правило, при перетаскивании компонентов на форму скрипта эти объекты не требуют отдельного создания или уничтожения — форма скрипта делает это автоматически.
Система скриптов также автоматически генерирует код, необходимый для использования компонента, и обновляет форму скрипта. После этого остаётся лишь настроить свойства, добавить код в обработчики событий и использовать необходимые методы для реализации рабочей формы скрипта.
Создание компонентов в скрипте
Компоненты можно напрямую создавать или уничтожать в скрипте, передавая параметр NilConstructorOpenSaveTOpenDialogTSaveDialog
Настройка скриптовых форм
Основные моменты настройки форм скриптов:
- Чтобы форма всегда оставалась поверх других открытых панелей, установите
свойство в значение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
Обновление скриптовых форм и компонентов
Когда содержимое скриптовой формы устаревает (например, элементы управления не обновляются или не перерисовываются), они могут выглядеть «зависшими» или повреждёнными — это может быть вызвано интенсивной фоновой обработкой данного скрипта.
Метод UpdateUpdate
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 CreatorScripts\Delphiscript Scripts\Pcb\PCB Logo Creator