编写脚本
编写脚本
有许多基本概念和术语适用于编写脚本:
- 进程是您可以用来在脚本中执行命令的命令字符串。
- 组件是工具面板上的可视控制对象,您可以将其拖放到脚本表单上以操纵设计。
- 放置在脚本表单上的组件具有方法、属性和事件。
- 对象接口是特殊的对象接口,您可以使用它们从脚本中提取和修改设计文档上的数据。
脚本语言
默认脚本语言设置为DelphiScript(*.pas)。脚本引擎本身是用Embarcadero Delphi编写的,而工具面板是基于Delphi的VCL(可视组件库)。
一个 DelphiScript 单元
通过首先创建一个新项目和脚本文件,可以完成一个快速且基础的脚本编写练习。假设项目和脚本文件设置为DelphiScript语言,可以输入如下的简单“Hello World”脚本。
Procedure ShowAMessage;
Var
DefaultMessage;
Begin
DefaultMessage := 'Hello World!';
ShowMessage(DefaultMessage);
End;
在该程序中,有一个标准的 DelphiScript ShowMessage 函数,它会打开一个对话框,显示由 DefaultMessage 变量定义的“Hello World”消息。
运行脚本
要运行其中一个脚本,请从主菜单选择文件 » 运行脚本,然后从选择要运行的项目对话框中选择一个可用的脚本程序。当版本运行时,将打开一个对话框以显示消息。

从文件»运行脚本菜单运行一个简单的HelloWorld脚本单元。
脚本也可以通过编辑器的运行命令执行,可以通过运行按钮(
)、F9快捷键,或者从主菜单选择运行 » 运行来访问。
除了运行命令本身,下拉运行菜单还提供了一系列脚本控制和调试命令。
当第一次选择运行命令时,将打开选择要运行的项目对话框,允许您指定脚本的主要过程(在此例中为ShowAMessage)。设置完成后,使用运行命令可以轻松地从编辑器重复运行脚本。使用运行 » 设置项目启动过程更改为不同的过程,或关闭并重新打开脚本项目以清除设置。
要停止正在运行的脚本,请使用停止按钮(
),从主菜单选择运行 » 停止,或使用Ctrl+F3快捷键。
一个 DelphiScript 表单
在上面创建的 HelloWorld 项目的基础上,可以使用表单单元创建一个类似的脚本。
脚本表单是一个对话窗口,可以承载各种控件,如按钮、备忘录和列表框。它具有事件处理程序,当控件生成事件时会做出响应,例如当按钮被点击时。
要创建新的脚本表单,请在项目面板中右击项目名称,选择添加新项目到项目选项,并选择脚本表单。可以通过主菜单中的文件»另存为来保存和重命名脚本。
要查看和编辑当前聚焦表单或其组件的属性值,请打开对象检查器面板。对象检查器面板用于更改表单的属性并在与当前表单关联的事件处理程序中插入代码。
请注意,脚本表单在文档底部提供了两个标签页:**代码** 和 **表单** 标签页。 **代码** 标签页包含如上所示的事件处理程序和过程,而表单标签页代表对话框,并具有控件和相关的事件处理程序。使用标签页或 **F12** 快捷键在两者之间切换。 “对话框”和“脚本表单”在本指南中描述上是等价的。 “表单”一词指的是在脚本系统中实时设计的窗口,“对话框”是软件中等待用户反馈并在点击了对话框按钮或控件时采取行动的活动表单。对象检查器面板允许您查询和编辑活动脚本表单中组件的属性和事件。在设计编辑器窗口中点击活动脚本表单上的单个组件将选择该组件,并在对象检查器面板中显示与之相关的属性。或者,使用面板顶部的下拉字段从当前放置在活动表单上的所有组件列表中选择。表单本身也包括在内。
信息显示在两个标签页上 - 属性和事件:
- 面板的属性标签列出了所选组件的所有属性特征。可用的属性列表将取决于当前正在检查的特定组件类型。属性是影响对象可见行为或操作的对象特征。例如,可见属性(在行为子类别中)决定了对象是否在其放置的脚本表单上显示。组件的属性可以根据需要进行修改。点击属性右侧的字段内部,直接输入、切换复选框或从下拉菜单中选择一个条目,视情况而定。
- 面板的事件标签提供了当前选定组件可以响应的所有事件的列表。同样,可用的事件列表将取决于当前正在检查的特定组件类型。当发生事件时,例如表单上的按钮被点击,脚本将采取适当的行动,前提是已经在代码中定义了事件的处理程序。这种程序被称为事件处理程序。
FormName.EventName。然后,事件处理程序的框架代码被添加到主脚本代码中,该代码在设计空间中成为活动标签。然后可以编写事件处理程序的“填充”代码,以在事件发生并被运行中的脚本检测到时提供所需的响应。
面板的底部部分提供了当前选中的属性或事件的摘要描述(如果有的话)。
对于这个表单脚本,在对象检查器面板中将表单的标题属性从HelloWorldForm更改为Hello World!。这些字符串与下面进一步显示的示例事件处理程序和过程代码中使用的字符串相匹配。
添加和配置控件
配置好基本表单后,可以根据需要通过访问工具面板来向对话框添加控件。基于Delphi的可视组件库的工具面板是一个组件面板,它提供了一系列窗口控件,这些控件按组件类别组织(有关更多详细信息,请参阅脚本图形组件和组件类别页面)。

通过区域标题标签可以展开和折叠工具面板的各个部分。 使用面板顶部的控件、类别名称和右键菜单来配置面板中控件的展示方式:展开/折叠类别,更改调色板项目的展示方式等。
TComponent。在“Hello World”项目的对话框版本中,表单上有两个按钮 - 显示和关闭。点击工具面板中标准区域的TButton。
这样做两次,以在表单上放置两个按钮。一个按钮将用于在单独的对话框中显示“Hello World!”消息,另一个按钮将用于关闭主对话框。
面板中的所有组件都有关联的属性、方法和事件,其中:
- 一个属性是影响对象可见行为或操作的对象特征。例如,
Visible属性决定了一个对象是否可以在脚本表单上被看到。 - 一个方法是总是与一个对象关联的过程,定义了那个对象的行为。
- 一个事件是脚本检测到的动作或发生的事情。在脚本中,程序员为每个事件处理器编写代码,这些事件处理器设计用来捕捉特定事件,如鼠标点击。
使用对象检查器面板,可以在放置后查询和修改组件的属性和事件。
通过对象检查器面板,可以将两个按钮配置从它们的默认名称和标题更改。
将第一个按钮的名称配置为
在对象检查器面板中选择一个组件并编辑其属性。
事件处理程序代码可以通过直接引用表单上的控件来构建。在这个例子中,显示按钮将触发一个在现有表单上方的ShowMessage对话框,而关闭按钮动作将关闭此表单。
事件处理程序代码
双击显示按钮将以代码视图打开表单,并为其事件处理程序创建骨架代码。或者,选择按钮然后在对象检查器面板中选择事件标签。在面板中双击OnClick事件也会如上打开代码视图。在代码视图中,可以如下所示在事件处理程序中包含ShowMessage语句。
关闭(表单)语句的OnClick事件来定义关闭按钮的事件处理程序:
```delphi
程序 THelloWorldForm.bCloseClick(发送者: TObject);
开始
关闭;
结束;
```
定义了事件处理程序后,脚本中需要有一个过程作为从软件调用对话框时的起点。这将添加在代码脚本的末尾。
请注意,表单名称为HelloWorldForm,过程名称为RunHelloWorld —— 在同一个脚本中拥有唯一的表单名称很重要,以避免表单名称冲突。
Procedure RunHelloWorld;
Begin
HelloWorldForm.ShowModal;
End;
脚本可以保存然后从主菜单(文件» 运行脚本)通过运行RunHelloWorld过程项下的HelloWorldDialog条目来运行。
或者,可以通过运行»设置启动项目过程菜单将过程分配给运行命令/按钮(。

运行一个HelloWorld表单脚本,其中表单的显示按钮激活一个ShowMessage对话框。
对象检查器面板使得更改表单单元的属性和事件变得简单。例如,要更改工作区中表单的位置,使用面板更改表单位置属性的poScreenCenter值。当脚本运行时,对话框现在将被放置在桌面屏幕的中心。
Scripts\Delphiscript Scripts\General文件夹找到Hello World项目脚本的参考版本。请记住,这些是遗留的参考设计,并且没有更新。调用一个过程
如上所述,项目中的任何脚本(使用相同的语言集)都可以访问全局变量和程序,因此一个脚本中的程序可以调用项目中另一个脚本的程序。 这可以通过HelloWorld示例项目中额外的`ShowAParametricMessage`代码部分来演示: ``` 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脚本),如下所示。

在HelloWorld脚本中调用了HelloWorldDialog脚本的参数化过程。
调用向ShowAParametricMessage过程传递了'Goodbye World'消息字符串,因此在点击关闭按钮、表单关闭之前,会显示此消息。

上图所示的脚本调用在HelloWoldDialog表单关闭程序中插入了一个指定的消息。 如果传递的字符串参数为空,`ShowAParametricMessage(''),` 将显示默认的'Hello World!'消息,如`ShowAParametricMessage`程序中定义的。
使用代码资源管理器面板浏览脚本标识符
代码资源管理器面板提供了一个视觉摘要,展示了活动脚本文档中使用的所有标识符(变量、函数和过程)。

代码资源管理器面板
面板中出现的标识符信息按照以下顶级文件夹分组:
如果为过程/函数声明了局部变量,它们将出现在该过程/函数下的变量子文件夹中列出。使用独特的图标来区分各种标识符:
|
|
过程 |
|
|
函数 |
|
|
过程/函数参数 |
|
|
变量(局部或全局) |










