表单和元件
图形组件概述
脚本系统可处理两类组件:可视组件和非可视组件。
可视组件用于构建用户界面,非可视组件用于不同的任务,例如 TimerOpenDialogMainMenu
- 非可视组件
非可视组件可用于在预定时间间隔内激活特定代码,用户永远不会看到它。Timer - 组件
,Button 和Edit 组件是可视组件。Memo
这两类组件在设计时都会出现,但非可视组件在运行时不可见。面板中的组件
- 属性
- 事件
- 方法
A
一个
A
所有脚本表单都有一个或多个组件。组件通常显示信息或允许用户执行操作。例如 LabelEditButton
任何组件的组合都可以放在表单上,当脚本运行时,用户可以与表单上的任何组件进行交互。程序员的任务是决定当用户点击按钮或更改方框中的文本时会发生什么。 Edit
脚本系统提供了许多组件,可用于为脚本创建复杂的用户界面。要在表单上放置组件,只需在工具调板面板上找到组件图标并双击即可。此操作可将组件置于活动窗体上。大多数组件的可视化表示是通过其属性设置的。组件最初放置在表单上的默认位置,但可以根据需要重新定位(拖动)和调整大小(拉伸)。您也可以稍后使用
当一个组件被放置到表单上时,脚本系统会自动生成使用该组件所需的代码,并更新脚本表单。只需设置属性并执行事件处理代码,就能使用所需的方法让窗体上的组件工作。
设计脚本表单
设计脚本表单是为了在环境中与用户进行交互。设计脚本表单是可视化开发的核心。
实际上,所有组件都放在脚本表单上,设置的每个属性都存储在描述表单的文件(一个 *.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 发出的事件通知,并调用相应的事件处理程序方法。
从 Scripts\DelphiScript Scripts\General\
脚本集文件夹中的 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