第 3 章 宏

宏是您可以重复使用的会话记录。

在宏中使用命令行开关

使用命令行开关,您可以在启动程序时记录会话、加载和运行宏,或将宏记录到特定的文件和位置。

记录会话

您可以记录在 SailWind Logic 中的工作会话。

步骤

  1. 在开始菜单中,导航到 SailWind Logic 的快捷方式。

  2. 右键单击快捷方式,然后单击 属性 弹出菜单项。

  3. 单击 快捷方式 选项卡,然后单击 "目标" 框。

  4. 在现有快捷方式的末尾,键入⌨️以下内容:

    "-log"

确保在 "powerlogic.exe" 和 "-log" 命令之间键入⌨️空格。

  1. 单击 确定。当您运行程序时,将创建一个日志。

将日志文件记录到特定文件和位置

您可以指定记录日志文件的文件名和位置。

步骤

  1. 在开始菜单中,导航到 SailWind Logic 的快捷方式。

  2. 右键单击快捷方式,然后单击 属性 弹出菜单项。

  3. 单击 快捷方式 选项卡,然后单击 "目标" 框。

  4. 在现有快捷方式的末尾,键入⌨️以下内容:

"-log:[路径和文件名]"

确保在 "powerlogic.exe" 和 "-log" 命令之间键入⌨️空格。

  1. 单击 确定。当您运行程序时,将在指定位置使用指定名称创建日志。

启动时运行宏

您可以在启动 SailWind Logic 时在启动时运行宏。

步骤

  1. 在开始菜单中,导航到 SailWind Logic 的快捷方式。

  2. 右键单击快捷方式,然后单击 属性 弹出菜单项。

  3. 单击 快捷方式 选项卡,然后单击 "目标" 框。

  4. 在现有快捷方式的末尾,键入⌨️以下内容:

"-run=[路径和文件名]"

例如:

-run=C:\SailWind Projects\Samples\mymacro.mcr

确保在 "powerlogic.exe" 和 "-run" 命令之间键入⌨️空格。或者,您可以使用 / 代替连字符(例如 /run=mymacro.mcr)。

  1. 单击 确定。当您运行程序时,指定的宏将在程序启动后立即运行。

宏语言介绍

本程序的宏语言类似于标准的 Visual Basic Script (VBScript) 语言。它支持大多数 VBScript 功能,包括以下内容:

变量

本程序的宏引擎支持变量,这些变量可以为 Null 或包含以下类型的值:

值类型根据以下规则相互转换,请参见 2

从到 逻辑 数值 字符串
Null False 0 空字符串
逻辑 如果为 False 则为 0,如果为 True 则为 1 如果为 False 则为 0,如果为 True 则为 1
数值 如果为 0 则为 False,否则为 True 数值的字符串表示
字符串 首先转换为数值 如果字符串的开头可以解释为数字,则使用该数字的值。否则为 0。

表 2. & 运算符参数

数值

数值表示浮点数。

注意:

数值字符串值类型是可互换的;它们在赋值时自动相互转换。

逻辑

逻辑值可以是 True 或 False。

字符串

字符串值表示字符串。

注意:

数值和字符串值类型是可互换的;它们在赋值时自动相互转换。

有关更多信息,请参见 Str 函数。

双精度

表示数值。

双精度和字符串类型是可互换的;也就是说,它们在赋值时自动相互转换。

对象

对象表示通过由方法和属性组成的接口处理的复杂实体。对象不同于数值字符串值类型。

对象可能有两种类型:

  • 宏对象: 使用宏引擎词汇表处理的内部对象,可能具有也可能不具有自动化接口。

  • 自动化对象: 使用自动化处理的内部或外部对象。

两种对象类型的语法相同:

Object.Method arg1, ..., argn

var = Object.Method( arg1, ..., argn )

表达式

本程序的宏引擎使用以下任一表达式:

  • 数值: 任何可以计算为数字的表达式。数值表达式的元素可以包括关键字、变量、常量和运算符的任意组合,这些组合会产生数字。

  • 字符串: 任何计算相邻字符序列的表达式。字符串表达式的元素可以包括字符串、字符串文字或字符串变量。

运算符

本程序的宏引擎使用以下运算符:

& 运算符 \* 运算符 + 运算符 / 运算符 - 运算符 = 运算符 ^ 运算符 And 运算符 比较运算符 Mod 运算符 Not 运算符 Or 运算符 Xor 运算符

& 运算符

强制两个表达式进行字符串连接。

语法

result = expression1 & expression2

参数

& 运算符具有以下参数:

参数 要求描述
result 必需任何数值变量
expression1 必需任何表达式当表达式不是字符串时,它将被转换为字符串
expression2 必需任何表达式当表达式不是字符串时,它将被转换为字符串

示例

S="abc" & "123"

* 运算符

将两个数字相乘。

语法

result = number1 * number2

参数

* 运算符具有以下参数:

参数 要求描述
result 必需任何数值变量
number1 必需任何表达式。如果表达式值不是数值,则将其转换为数值。
number2 必需任何表达式。如果表达式值不是数值,则将其转换为数值。

示例

X = y * z

+ 运算符

将两个数字相加。

语法

result = expression1 + expression2

参数

  • 运算符语法具有以下参数:
参数 要求描述
result 必需任何数值变量
expression1 必需任何表达式
expression2 必需任何表达式

注意:

当您使用 + 运算符时,可能无法确定是进行加法还是字符串连接。要强制进行字符串连接,请改用 & 运算符。这将消除歧义并提供自文档化代码。

下表描述了 + 运算符对于三种类型组合的行为:

表 3. + 运算符行为

参数 操作
两个表达式都是数值 加法
两个表达式都是字符串 连接
一个表达式是数值,另一个是字符串 加法

示例

X = y + z

/ 运算符

将一个数除以第二个数并返回浮点结果。

语法

result = number1 / number2

参数

/ 运算符具有以下参数:

参数 要求描述
result 必需任何数值变量
number1 必需任何表达式。如果表达式值不是数值,则将其转换为数值。
number2 必需任何表达式。如果表达式值不是数值,则将其转换为数值。

示例

x = y/z

- 运算符

求两个数字之间的差或表示数值表达式的负值。

语法

result = number1 - number2

  • 运算符是算术减法运算符,用于求两个数字之间的差。

-number

  • 运算符是一元取反运算符,表示表达式的负值。

参数

  • 运算符具有以下参数:
参数 要求描述
result 必需任何数值变量
number1 必需任何表达式。如果表达式值不是数值,则将其转换为数值。
number2 必需任何表达式。如果表达式值不是数值,则将其转换为数值。

示例

x = y - z

-x

= 运算符

将值赋给变量或属性。

语法

variable = value

参数

= 运算符具有以下参数:

参数 描述
variable 只能是变量或可写属性。可以是简单标量变量或数组元素。
value 任何数值表达式、字符串表达式、字面量或常量

示例

a = 1

^ 运算符

将数字提升到指定指数的幂。

语法

result = number ^ exponent

参数

^ 运算符具有以下参数:

参数 要求描述
result 必需任何数值变量
number 必需任何表达式
exponent 必需任何数值表达式只有当指数是整数时,数字才能为负数。

当在单个表达式中执行多个指数运算时,^ 运算符按照从左到右的顺序进行计算。

示例

x = y ^ z

And 运算符

对两个表达式执行逻辑与运算。

语法

result = expression1 And expression2

参数

And 运算符具有以下参数:

参数 要求描述
result 必需任何数值变量
expression1 必需任何表达式。如果表达式值不是逻辑值,则将其转换为逻辑值。
expression2 必需任何表达式。如果表达式值不是逻辑值,则将其转换为逻辑值。

下表说明了如何确定结果:

表 4. And 运算符结果
-- -- ---------------------- --
如果 expression1 为 且 expression2 为 则结果为
True True True
True False False
False True False
False False False

示例

a = b And c

比较运算符

比较表达式。

语法

result = expression1 comparisonoperator expression2

参数

比较运算符具有以下参数:

参数 要求描述
result 必需任何变量
expression1 必需任何表达式
expression2 必需任何表达式
comparisonoperator 必需可以是任何比较运算符。有关更多信息,请参见下表。

下表列出了比较运算符以及确定结果为 True、False 或 Null 的条件:

表 5. 比较运算符和结果

比较运算符 为 True 的条件 为 False 的条件
< (小于) expression1 < expression2 expression1 >= expression2
<= (小于或等于) expression1 <= expression2 expression1 > expression2
> (大于) expression1 > expression2 expression1 <= expression2
>= (大于或等于) expression1 >= expression2 expression1 < expression2
= (等于) expression1 = expression2 expression1 <> expression2
<> (不等于) expression1 <> expression2 expression1 = expression2

示例

b = 1 > 2

Mod 运算符

将一个数除以第二个数并仅返回余数。模数(余数)运算符将浮点数舍入为整数。

语法

result = number1 Mod number2

参数

Mod 运算符具有以下参数:

参数 要求描述
result 必需任何数值变量
number1 必需任何数值表达式
number2 必需任何数值表达式

示例

x = y Mod z

Not 运算符

对表达式执行逻辑非运算。

语法

result = Not expression

参数

Not 运算符具有以下参数:

参数 要求描述
result 必需任何数值变量
expression 必需任何表达式。如果表达式值不是逻辑值,则将其转换为逻辑值。

下表说明了如何确定结果:

表 6. Not 运算符结果

如果 expression 为 则结果为
True False
False True

示例

x = Not y

Or 运算符

对两个表达式执行逻辑或运算。

语法

result = expression1 Or expression2

参数

Or 运算符具有以下参数:

参数 要求描述
result 必需任何数值变量
expression1 必需任何表达式。如果表达式值不是逻辑值,则将其转换为逻辑值。
expression2 必需任何表达式。如果表达式值不是逻辑值,则将其转换为逻辑值。

下表说明了如何确定结果:

表 7. Or 运算符结果

如果 expression1 为 且 expression2 为 则结果为
True True True
True False True
False True True
False False False

示例

x = y Or z

Xor 运算符

对两个表达式执行逻辑异或运算。

语法

[result =] expression1 Xor expression2

参数

Xor 运算符具有以下参数:

参数 要求描述
result 可选任何数值变量
expression1 必需任何表达式。如果表达式值不是逻辑值,则将其转换为逻辑值。
expression2 必需任何表达式。如果表达式值不是逻辑值,则将其转换为逻辑值。

下表说明了如何确定结果:

表 8. Xor 运算符结果
-- -- ---------------------- --
如果 expression1 为 且 expression2 为 则结果为
True True False
True False True
False True True
False False False

示例

x = y Xor z

语句

本程序的宏引擎支持以下 VBScript 和其他语句:

Call Close Dim Do...Loop For-Next Function If...Then...Else 语句 Input # Modal Open Print # ReDim Set Sub While...Wend Width #

Call

将控制权转移到子过程或函数过程。

语法

[Call] name [argumentlist]

当您使用 Call 关键字调用需要参数的过程时,必须将 argumentlist 括在括号中。请参见下面的示例。

参数

Call 语句具有以下参数:

参数 描述
Call 可选关键字调用过程时不需要使用 Call 关键字。如果省略 Call 关键字,也必须省略 argumentlist 周围的括号。如果使用 Call 语法调用任何内置或用户定义函数,函数的返回值将被丢弃。
name 必需要调用的过程名称
argumentlist 可选要传递给过程的变量、数组或表达式的逗号分隔列表。

示例

Call MyProc(0)

相关主题

Close

结束使用 Open 语句打开的文件的输入⌨️/输出 (I/O)。当关闭为 Output 或 Append 打开的文件时,最终的输出缓冲区将写入该文件的操作系统缓冲区;释放与关闭文件关联的所有缓冲区空间;并且文件与其文件编号的关联结束。

语法

Close [filenumberlist]

参数

Close 语句具有以下参数:

参数 描述
filenumberlist 可选可以使用以下语法的一个或多个文件编号,其中 filenumber 是任何有效的文件编号:
[[#]filenumber] [, [#]filenumber]

如果省略 filenumberlist,则关闭由 Open 语句打开的所有活动文件。

示例

close #1

相关主题

Dim

声明变量并分配存储空间。

语法

Dim varname[([subscripts])] [,varname[([subscripts])]] . . .

参数

Dim 语句具有以下参数:

参数 描述
varname 必需变量名称遵循标准变量命名约定。
subscripts 可选数组变量的维度。subscripts 参数使用以下语法:[lower To] upper [, [lower To] upper]未明确声明时,下限为零。

您也可以使用带有空括号的 Dim 语句来声明动态数组。声明动态数组后,使用 ReDim 语句定义数组中的维数和元素。

示例

Dim x(10), y(20)

相关主题

宏 Do...Loop

Do...Loop

当条件为 True 时重复语句块,或直到条件变为 True。

语法

Do [{While | Until} condition] [statements] [Exit Do] [statements] Loop

Do [statements] [Exit Do] [statements] Loop [{While | Until} condition]

参数

Do Loop 语句具有以下参数:

参数 描述
condition 可选以下两种表达式类型之一:计算结果为 True 或 False 的数值表达式计算结果为 True 或 False 的字符串表达式当 condition 为 Null 时,condition 被视为 False。
statements 当 condition 为 True 时重复执行的一个或多个语句

您可以在 Do…Loop 语句中的任何位置放置任意数量的 Exit Do 语句,作为退出 Do Loop 语句的替代方法。Exit Do 通常在某些条件评估后使用,在这种情况下,Exit Do 语句将控制权转移到紧接在 Loop 之后的语句。

在嵌套的 Do Loop 语句中使用时,Exit Do 将控制权转移到发生 Exit Do 的循环上一级的循环。

示例

Do while i < 10 i = i + 1 loop

相关主题

For-Next

将语句组重复指定次数。

语法

For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter]

参数

For-Next 语句具有以下参数:

参数 描述
counter 必需用作循环计数器的数值变量。Counter 不能是布尔元素或数组元素。
start 必需counter 的初始值
end 必需counter 的最终值
step 可选每次控制通过循环时 counter 递增的数量。如果未指定,step 默认为 1。
statements 可选在 For 和 Next 之间执行的一个或多个语句,执行次数由计数器指定

step 参数可以是正数或负数。step 的值确定循环处理,如下表所述:

表 9. For-Next 语句循环计数器

循环执行条件
正数或零 counter <= end
负数 counter >= end

循环中的所有语句执行后,step 被添加到 counter。此时,要么再次执行循环中的语句(基于导致循环最初执行的相同测试),要么退出循环,并在 Next 语句之后的语句继续执行。

宏函数

您可以在循环中的任何位置放置任意数量的 Exit For 语句作为退出的替代方法。Exit For 通常在评估条件后使用,以将控制权转移到紧接在 Next 之后的语句。

您可以通过将一个 For-Next 语句放在另一个语句中来嵌套 For-Next 语句。为每个语句提供一个唯一的变量名作为其 counter。以下构造是正确的:

For A = 1 To 10 For B = 2 To 20 For C = 3 To 30 ... Next C Next B Next A

示例

for i = 0 to 10 step 2 s = sti next i

相关主题

语句

Function

声明构成函数过程主体的名称、参数和代码。

与子过程类似,函数过程是一个独立的过程,可以接受参数、执行一系列语句并更改其参数的值。但是,与子过程不同,当您想要使用函数返回的值时,函数过程可以像使用任何内置函数(如 Sqr、Cos 或 Chr)一样在表达式的右侧使用。

您可以在函数过程中使用两类变量:

  • 在过程中显式声明的变量: 这些变量始终是过程的局部变量,并使用 Dim 语句或等效语句。函数中局部变量的值在过程调用之间不保留。

  • 在过程中未显式声明的变量: 这些变量也是局部的,除非它们在过程外部的更高级别显式声明。

用法

Function name [(arglist)]

[statements]

[name = expression]

[Exit Function] [statements]

[name = expression]

End Function

Exit Function 语句导致立即退出函数过程。程序执行继续执行调用函数过程的语句之后的语句。您可以在函数过程中添加任意数量的 Exit Function 语句。

Function 语句具有以下参数:

要求
函数过程的名称
遵循标准变量命名约定。
要从函数返回值,请为函数名称赋值。您可以在过程中的任何位置为函数名称赋值。如果未为名称赋值,则过程返回空值。
可选
表示在调用过程时传递给函数过程的参数的变量列表。
使用逗号分隔多个变量。
可选
在函数过程主体内执行的任何语句组。
函数过程的返回值。

arglist 参数具有以下语法:

[ByVal | ByRef] varname[( )]

下表描述了 arglist 语法元素:

表 10. Function 语句 arglist 语法
-- -- ----------------------------------- -- --
部分 描述
ByVal 指示按值传递参数。
ByRef 指示按引用传递参数。
Varname 表示参数的变量名称。遵循标准变量命名约定。

您不能在任何其他过程(如子过程或其他函数过程)内定义函数过程。

有关调用函数过程的具体信息,请参阅 Call 语句。

示例

以下示例显示如何为名为 Example 的函数分配返回值。在这种情况下,False 被分配给名称以指示未满足某个条件。

Function Example() ... ' Value not found. Return False. If ConditionNotMet Then Example = False Exit Function End If ... Example = True End Function Related Topics

If...Then...Else 语句

根据表达式的值可能执行一组语句。

语法

If condition Then [statements] [Else [elsestatements]]

块语法:

If condition Then [statements] [ElseIf condition-n Then [elseifstatements]] ... [Else [elsestatements]] End If

参数

If...Then...Else 语句有以下参数:

condition 必需任何表达式。如果表达式不是逻辑值,则会被转换为逻辑值。
statements 在块语法中可选;在不含 Else 子句的单行语法中必需一个或多个用冒号分隔的语句;当 condition 为 True 时执行。
condition-n 可选任何逻辑表达式。如果表达式不是逻辑值,则会被转换为逻辑表达式。
elseifstatements 可选当关联的 condition-n 为 True 时执行的一个或多个语句
elsestatements 可选当没有先前的 condition 或 condition-n 为 True 时执行的一个或多个语句

对于简短简单的测试可以使用单行语法。为了更好的结构和灵活性,请使用块语法。块语法也更易于阅读、维护和调试。

使用单行语法时,可以执行多个语句作为 If...Then 判断的结果。所有语句必须在同一行并用冒号分隔,如下例:

If A > 10 Then A = A + 1 : B = B + A : C = C + B

块 If 语句必须是行中的第一个语句。Else、ElseIf 和 End If 部分前面只能有行号或行标签。块 If 语句必须以 End If 语句结束。

要确定语句是否是块 If 语句,请检查 Then 关键字后面的内容。如果在 Then 后面的同一行上出现除注释之外的任何内容,则该语句被视为单行 If 语句。

Else 和 ElseIf 子句都是可选的。在块 If 语句中可以有任意多个 ElseIf 子句,但不能出现在 Else 子句之后。块 If 语句可以嵌套。

在执行块 If 语句时,会测试 condition。当 condition 为 True 时,执行 Then 后面的语句。当 condition 为 False 时,依次评估任何 ElseIf condition。当找到 True 的 condition 时,立即执行关联的 Then 后面的语句。如果没有 ElseIf condition 为 True(或者没有 ElseIf 子句),则执行 Else 后面的语句。执行完 Then 或 Else 后面的语句后,继续执行 End If 后面的语句。

示例

If x < y then x = y

If x < y then x = y End if

相关主题

Input

从打开的文本文件中读取数据并将数据分配给变量。此语句仅用于以 Input 模式打开的文件。读取时,字符串或数字数据会原样分配给变量。

语法

Input #filenumber, varlist

参数

Input # 语句有以下参数:

filenumber 必需可以是任何有效的文件编号
varlist 必需可以是用逗号分隔的变量列表,这些变量被分配从文件中读取的值。不能是数组或对象变量。但是,可以使用描述数组元素的变量。

相关主题

打开对变量的访问。当 SailWind 宏中打开模态对话框时,对打开对话框之外的所有变量的访问都会被阻止——只有打开对话框中的控件可访问。要使变量在任何打开的模态对话框上下文中可访问,请在宏文件开头将其声明为 "modal"。

语法

modal variablename

参数

modal 关键字有以下参数:

variablename 必需
要使其可访问的变量名称。

示例

modal docname

Open

启用对文件的输入⌨️和输出。在对文件执行任何 I/O 操作之前必须打开文件。Open 操作为文件分配 I/O 缓冲区并确定要使用的访问模式。如果文件已被另一个进程打开且不允许指定的访问类型,则 Open 操作失败并发生错误。

语法

Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]

参数

Open 语句有以下参数:

pathname 必需指定文件名的字符串表达式。也可以包含文件夹和驱动器名称。
mode 必需指定文件访问模式的关键字:Append、Binary、Input、Output 或 Random。如果未指定 mode,则文件以Random 访问模式打开。
access 可选指定对打开文件允许的操作的关键字:Read、Write 或 Read Write
lock 可选指定其他进程对打开文件限制的操作的关键字:Shared、Lock Read、Lock Write 和 Lock ReadWrite

如果 pathname 指定的文件不存在,则在以 Append、Binary、Output 或 Random 访问模式打开文件时会创建该文件。

示例

Open "C:\data.txt" for read as #1

相关主题

宏 Print #

Print

将格式化数据写入顺序文件。

语法

Print # filenumber, [outputlist]

参数

Print # 语句有以下参数:

filenumber 必需任何有效的文件编号
outputlist 可选
要打印的表达式或表达式列表。当 outputlist 为空时不会向文件写入任何内容。但是,当 outputlist 为 Null 时,Null 会被写入文件。

如果省略 outputlist 并且仅在 filenumber 后包含列表分隔符,则会向文件打印一个空行。

可以用空格或分号分隔多个表达式。空格与分号效果相同。

示例

print #1, a, b, c

outputlist 有以下语法:

[{Spc(n) | Tab[(n)]}] [expression] [charpos]

11 描述了 outputlist 语法元素:

表 11. Print # 语句 outputlist 语法
-- -- ----------------------------------------------- -- --
设置 描述
Spc(n) 在输出中插入空格字符,其中 n 是要插入的空格数。
Tab(n) 将插入点定位到绝对列号,其中 n 是列号。
使用不带参数的 Tab 将插入点定位到下一个打印区域的开始处。
由于 Print # 将数据的映像写入文件,因此必须分隔数据以便正确打印。如果使用不带参数的 Tab 将打印位置移动到下一个打印区域,Print # 也会将打印字段之间的空格写入文件。
expression 要打印的数字或字符串表达式。可以用空格或分号分隔多个表达式。
charpos 指定下一个字符的插入点。如果省略 charpos,下一个字符将在下一行打印。使用分号将插入点定位在最后显示的字符之后。
表 11. Print # 语句 outputlist 语法(续)
---------------------------------------------------------- -- --

使用 Print # 写入的数据通常使用 Input # 从文件中读取。

示例

Print #1, a, Spc(3), b

相关主题

ReDim

为动态数组变量重新分配存储空间。使用 ReDim 调整已使用带空括号(无维度下标)的 Dim 语句声明的动态数组的大小。可以重复使用 ReDim 来更改数组中的元素数量和维度。

注意:

如果重新声明在 Dim 语句中明确指定了大小的数组变量的维度,则会发生错误。

语法

ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .

参数

ReDim 语句有以下参数:

Preserve 可选用于在更改最后一个维度的大小时保留现有数组中数据的关键字。
varname 必需变量名称;遵循标准变量命名约定。
subscripts 必需数组变量的维度subscripts 参数使用以下语法:[lower To] upper [,[lower To] upper]
未明确声明时,下限为零。

注意:

如果将数组缩小,则被删除元素中的任何数据都会丢失。

使用 Preserve 时,只能调整最后一个数组维度的大小,不能更改维度数量。例如,如果数组只有一个维度,则可以调整该维度的大小,因为它是最后一个也是唯一的维度。

但是,如果数组有两个或多个维度,则只能更改最后一个维度的大小,同时保留数组内容。以下示例展示了如何在不擦除数组中现有数据的情况下增加动态数组最后一个维度的大小:

ReDim X(10, 10, 10) . . . ReDim Preserve X(10, 10, 15)

使用 Preserve 时,只能通过更改上限来更改数组的大小。更改下限会导致错误。

示例

ReDim x(150)

相关主题

Set

将对象引用分配给变量或属性。

语法

Set objectvar = {objectexpression | Nothing}

参数

Set 语句有以下参数:

objectvar 必需变量或属性的名称;遵循标准变量命名约定
objectexpression 必需表达式,由对象名称、另一个声明为相同对象类型的变量或返回相同对象类型的函数或方法组成
Nothing 可选中断 objectvar 与任何特定对象的关联。将 Nothing 赋给 objectvar 会释放所有与先前引用对象关联的系统和内存资源,当没有其他变量引用它时。

要有效,objectvar 必须与要分配给它的对象具有相同的对象类型。

DimReDim 语句仅声明变量名称,该名称引用对象。除非 Set 语句分配了特定对象,否则不会引用实际对象。

当使用 Set 将对象引用分配给变量时,会创建对对象的引用 - 而不是对象的副本。多个对象变量可以引用同一个对象。因为这样的变量是对对象的引用而不是对象的副本,所以对象的任何更改都会反映在所有引用它的变量中。

示例

Set obj = application

相关主题

语句

子程序

声明构成子程序体的名称、参数和代码。

与函数过程类似,子程序是一个独立的可接收参数、执行一系列语句并改变其参数值的过程。但与返回值的函数过程不同,子程序不能用于表达式中。

子程序语句中可使用两类变量:

  • 过程内显式声明的变量:这些变量始终是过程局部变量,使用 Dim 语句或等效语句声明。子程序中局部变量的值在过程调用之间不会保留。

  • 过程内未显式声明的变量:这些变量也是局部的,除非在过程外部的更高层级显式声明。

用法

Sub 名称 [(参数列表)]
[语句]
[Exit Sub]
[语句]

End Sub

Sub 语句包含以下参数:

名称 必填子程序名称遵循标准变量命名规范。
参数列表 可选表示传递给子程序的参数变量列表当子程序被调用时。使用逗号分隔多个变量。
语句 在子程序体内执行的任何语句组。Exit Sub 语句会导致立即退出子程序。程序执行继续执行调用子程序的语句之后的语句。Exit Sub 语句可以出现在子程序中的任何位置。

示例

参数列表 参数具有以下语法:

[ByVal | ByRef] 变量名[( )]

12描述了参数列表语法元素:

部分 描述
ByVal 表示参数按值传递。
ByRef 表示参数按引用传递。
变量名 表示参数的变量名称。遵循标准变量命名规范。

表 12. 子程序语句参数列表语法

注意:

不能在函数或其他子程序等任何其他过程中定义子程序。

有关调用子程序的具体信息,请参阅 Call 语句。

相关主题

While...Wend

当给定条件为 True 时执行一系列语句。

语法

While 条件 [语句] Wend

参数

While Wend 语句包含以下参数:

条件 必填任何表达式。如果表达式不是逻辑类型,则转换为逻辑类型。
语句 可选当条件为 True 时执行的一条或多条语句

如果条件为 True,则执行所有语句直到遇到 Wend 语句。然后控制返回到 While 语句并再次检查条件。如果条件仍为 True,则重复该过程。如果条件不为 True,则继续执行 Wend 语句之后的语句。

可以嵌套任意层级的 While...Wend 语句。每个 Wend 与最近的 While 语句匹配。

示例

While i < 10 i = i + 1 Wend

相关主题

宏 Width #

Width

为使用 Open 语句打开的文件分配输出行宽。

语法

**Width #**文件号, 宽度

参数

Width # 语句包含以下参数:

文件号 必填任何有效的文件编号
宽度 必填0 到 255 范围内的数值表达式。表示一行中显示多少个字符后开始新行。如果宽度等于 0,则行长度没有限制。宽度的默认值为 0。

示例

Width #2, 100

相关主题

语句

Open

函数

本程序的宏引擎当前支持以下内置函数:

Asc Atn Chr Command Cos CreateObject CurDir Dir DoEvents Environ Eof Exp GetObject GetTmpFileName InStr InStrRev Left Len Mid MkDir MoveFile MsgBox Right Sin Spc Str Tab Val

Asc

此函数返回一个整数,表示字符串中第一个字母对应的字符代码。

语法

Asc(字符串)

参数

Atn 函数包含以下参数:

字符串 必填
任何有效的字符串表达式
如果字符串不包含字符,则会发生运行时错误。

示例

i = Asc("abc")

Atn

此函数返回一个 Double,指定数字的反正切值。

更多信息请参阅 Double

结果范围在 -π/2 到 π/2 弧度之间。要将度数转换为弧度,请将度数乘以 π/180。要将弧度转换为度数,请将弧度乘以 180/π。

Atn 函数取直角三角形两条边的比值并返回对应的弧度角。该比值是对边长度除以邻边长度。

Atn 是 Tan 的逆三角函数,Tan 以角度为参数并返回直角三角形两条边的比值。不要将 Atn 与余切混淆,余切是正切的倒数(1/正切)。

用法

Atn(数字)

Atn 函数包含以下参数:

数字 必填
任何表达式。如果表达式不是逻辑类型,则转换为逻辑类型。

示例

f = Atn(2)

Chr

此函数返回包含与指定字符代码关联的字符的字符串。

语法

Chr(字符代码)

参数

Chr 函数包含以下参数:

字符代码 必填
标识字符的长整型。0 到 31 的值是标准的不可打印 ASCII 码。例如,Chr(10) 返回换行符。字符代码的正常范围是 0 到 255(含)。

示例

c = chr(64)

Command

此函数返回用于启动程序的命令行,包括可执行文件的路径和任何后续参数。

语法

Command

当从命令行启动程序时,命令行对宏脚本可用。

参数

示例

假设程序通过以下命令启动:

BlazeRouter log:logfile.log preview.pcb

Command 函数返回:

"C:\<install_folder>\<version>\Programs\BlazeRouter.exe log:logfile.log preview.pcb"

Cos

此函数返回一个 Double,指定角度的余弦值。

更多信息请参阅 Double

Cos 函数取一个角度并返回邻边长度除以斜边长度的比值。结果范围在 -1 到 1 之间。要将度数转换为弧度,请将度数乘以 π/180。要将弧度转换为度数,请将弧度乘以 180/π。

用法

Cos(数字)

Cos 函数包含以下参数:

数字 必填
表示弧度角度的 double 或任何有效的数值表达式

示例

x = Cos(1.57)

CreateObject

此函数创建并返回对 ActiveX 对象的引用。

语法

CreateObject(类,[服务器名])

参数

CreateObject 函数语法包含以下参数:

必填字符串要创建的对象的应用程序名称和类。
服务器名 可选字符串将在其上创建对象的网络服务器名称。如果远程服务器不存在或不可用,则会发生运行时错误。

参数使用语法 应用程序名.对象类型 并包含以下元素:

应用程序名 必填字符串提供对象的应用程序名称。
对象类型 必填字符串要创建的对象的类型或类。

要创建 ActiveX 对象,请将由 CreateObject 返回的对象分配给对象变量。

当对象没有当前实例时使用 CreateObject。如果对象实例已在运行,则启动新实例并创建指定类型的对象。要使用当前实例,或启动应用程序并使其加载文件,请使用 GetObject 函数。

如果对象已将自己注册为单实例对象,则无论执行多少次 CreateObject,都只会创建一个对象实例。

示例

set obj = CreateObject("PowerPCB.Application")

CurDir

此函数返回一个表示当前路径的变体字符串。

语法

CurDir [(drive)]

参数

CurDir 函数有以下参数:

drive 可选
指定现有驱动器的字符串表达式。如果未指定驱动器或 drive 是空字符串 (" "),CurDir 返回当前驱动器的路径。

示例

s = CurDir("d:")

Dir

此函数返回与指定模式、文件属性或驱动器卷标匹配的文件或文件夹名称字符串。

语法

Dir(pathname)

参数

Dir 函数有以下参数:

pathname 可选
指定文件名的字符串表达式,也可包含文件夹和驱动器名称。
如果未找到 pathname,则返回空字符串 ("")。

Dir 支持使用多字符 (*) 和单字符 (?) 通配符来指定多个文件。

示例

获取 C 盘根目录下的第一个文件:

Dir("C:\.")

获取同一路径下的下一个文件:

Dir

在 C:\SailWind Projects\Samples 开始另一个搜索:

Dir("C:\SailWind Projects\Samples\*.*")

DoEvents

此函数将控制权传递给操作系统。操作系统在处理完其队列中的事件后返回控制权。

语法

DoEvents()

如果宏正在执行长时间计算,DoEvents 可能很有用。每隔一秒或更长时间插入 DoEvents 调用可以防止队列中未处理事件的累积。

参数

Macros Environ

Environ

此函数返回与操作系统环境变量关联的字符串。

语法

Environ [(envstring)]

参数

Environ 函数有以下参数:

Envstring 可选包含环境变量名称的字符串表达式。
----------- -------------------------------------------------------------------------------

如果在环境字符串表中找不到 envstring,则返回空字符串 ("")。

Environ 返回分配给指定 envstring 的文本;即在环境字符串表中该环境变量的等号 (=) 后面的文本。

示例

s = Environ ("path")

Eof

此函数返回一个整数,表示布尔值 True,当以随机或顺序输入⌨️方式打开的文件已到达结尾时。

使用 Eof 函数可避免在文件结尾后尝试获取输入⌨️时产生的错误。

13列出了 Eof 函数的返回值:

表 13. Eof 函数返回值

条件 Eof 函数返回
到达文件结尾前 False
到达文件结尾后 True
以随机访问方式打开文件且 Get 语句能够读取完整记录 False
以随机访问方式打开文件且 Get 语句无法读取完整记录 True
以二进制访问方式打开文件且 Get 语句能够读取完整记录 False
表 13. Eof 函数返回值(续)
-- ---------------------------------------------------- -- -- --
以二进制访问方式打开文件且 Get 语句无法读取完整记录 True
以输出方式打开文件 True

用法

Eof [(filenumber)]

Eof 函数有以下参数:

filenumber 可选
包含任何有效文件编号的整数

示例

If Eof (1) then ....

Exp

此函数返回一个 Double 值,指定 e(自然对数的底数)的幂。常数 e 约为 2.718282。

更多信息请参见 Double

注意:

Exp 函数与 Log 函数互补,可称为反对数。

用法

Exp(number)

Exp 函数有以下参数:

number 必需
Double 或任何有效的数值表达式。当 number 的值超过 709.782712893 时,会发生错误。

示例

x = exp(y)

GetObject

此函数返回对 ActiveX 组件提供的对象的引用。

语法

GetObject([pathname] [, class])

参数

GetObject 函数有以下参数:

pathname 可选
变体字符串
包含要检索对象的文件的完整路径(文件夹和驱动器)和名称。如果省略 pathname,则需要 class。
class 可选变体字符串表示对象类的字符串。

class 参数使用语法 appname.objecttype,包含以下元素:

appname 必需变体字符串提供对象的应用程序名称。
objecttype 必需变体字符串要创建的对象的类型或类。

使用 GetObject 函数从文件访问 ActiveX 对象并将该对象分配给对象变量。使用 Set 语句将 GetObject 函数返回的对象分配给对象变量。

示例

obj = GetObject(, "PowerPCB.Application")

GetTmpFileName

此函数返回一个字符串,指定一个保证在由字符串参数标识的文件夹中唯一的新文件名。

语法

GetTmpFileName(string)

参数

GetTmpFileName 函数有以下参数:

string 必需
字符串表达式

示例

s = GetTmpFileName("d:\tmp")

InStr

此函数返回一个字符串在另一个字符串中首次出现的位置。

语法

InStr([start, ]string1, string2)

参数

InStr 函数有以下参数:

start 可选数值表达式,设置每次搜索的起始位置。如果省略 start,则从第一个字符位置开始搜索。
string1 必需要搜索的字符串表达式。
string2 必需要查找的字符串表达式。

返回值

表 14. InStr 函数返回值

条件 InStr 返回
string1 为空字符串 0
string2 为空字符串 start
未找到 string2 0
在 string1 中找到 string2 匹配找到的位置
start > string 0

示例

i = InStr(1,"cbc","c")

InStrRev

此函数返回一个字符串在另一个字符串中从末尾开始查找的匹配位置。

语法

InStrRev(string1, string2, [start])

参数

InStrRev 函数有以下参数:

string1 必需被搜索的字符串表达式。
string2 必需要查找的字符串表达式。
start 可选数值表达式,设置每次搜索的起始位置。如果省略,则从最后一个字符位置开始搜索。

返回值

表 15. InStrRev 函数返回值

条件 InStrRev 返回
string1 为空字符串 0
string2 为空字符串 Start
未找到 string2 0
在 string1 中找到 string2 匹配找到的位置
start > Len(string2) 0

示例

以下示例代码返回 "4"。

InStrRev("abcdbc", "bc")

Left

此函数返回字符串左侧指定数量的字符。

语法

Left(string, length**)**

参数

Left 函数有以下参数:

string 必需要从中返回左侧字符的字符串表达式
length 数值表达式,表示要返回的字符数如果 length 为 0,Left 返回空字符串 (" ")。如果 length大于或等于字符串中的字符数,Left 返回整个字符串。

示例

以下示例代码返回 "ab"。

Left("abcd", 2)

Len

此函数返回字符串中的字符数(字符串长度)。

语法

Len(string)

参数

Len 函数有以下参数:

string 必需
任何有效的字符串表达式

示例

以下示例代码返回 4。

Len("abcd")

Mid

此函数返回字符串中指定数量的字符。

语法

Mid (string, start, [length])

参数

Mid 函数有以下参数:

string 必需要从中返回字符的字符串表达式
start 必需字符串中返回部分的起始字符位置。如果start 大于字符串中的字符数,Mid 返回空字符串 (" ")。
length 可选要返回的字符数。如果省略,当字符串中的字符数(包括 start 位置的字符) 小于 length 时,Mid 返回从 start 位置到字符串末尾的所有字符。

示例

以下示例代码返回 "cd"。

Mid("abcdbc", 3, 2)

MkDir

此函数创建新文件夹。

语法

MkDir (path)

参数

MkDir 函数有以下参数:

path 必需
标识要创建的文件夹的字符串表达式。路径可以包含驱动器号。如果未指定驱动器,MkDir 在当前驱动器上创建新文件夹。

示例

MkDir ("D:\newdir")
Macros MoveFile

MoveFile

此函数将 path1 参数指定的文件移动到 path2 指定的位置。

语法

MoveFile(path1, path2)

参数

MoveFile 函数有以下参数:

path1 必需字符串表达式
path2 必需字符串表达式

示例

MoveFile("C:\data.bin","D:\")

MsgBox

此函数在对话框中显示消息,等待用户单击按钮,并返回一个整数指示用户单击了哪个按钮。

用法

MsgBox(prompt [, buttons] [, title])

MsgBox 函数有以下参数:

prompt 必需
字符串表达式,显示为对话框中的消息。
prompt 的最大长度为 1024 个字符,取决于所用字符的宽度。如果 prompt 包含多行,可以使用回车符 (Chr(13))、换行符 (Chr(10)) 或回车换行符组合 (Chr(13) & Chr(10)) 分隔各行。
buttons 可选
数值表达式,是用于指定要显示的按钮数量和类型、使用的图标样式以及默认按钮标识的值的总和。
buttons 的默认值为 0。
title 可选
显示在对话框标题栏中的字符串表达式。
title 的默认值为应用程序名称。

buttons 参数设置如下:

常量 描述
mbOKOnly 0 仅显示确定按钮。
mbOKCancel 1 显示确定和取消*按钮。
mbAbortRetryIgnore 2 显示中止、重试和忽略按钮。
mbYesNoCancel 3 显示是、否和取消*按钮。
mbYesNo 4 显示是和否按钮。
mbRetryCancel 5 显示重试和取消*按钮。
mbCritical 16 显示关键消息图标。
mbQuestion 32 显示警告查询图标。
mbExclamation 48 显示警告消息图标。
mbInformation 64 显示信息消息图标。
mbDefaultButton1 0 第一个按钮为默认。
mbDefaultButton2 256 第二个按钮为默认。
mbDefaultButton3 512 第三个按钮为默认。

表 16. MsgBox 按钮设置

为 buttons 参数创建最终值时,每组只能使用一个数字。

  • 第一组值 (0-5) 描述对话框中显示的按钮数量和类型

  • 第二组值 (16, 32, 48, 64) 描述图标样式

  • 第三组值 (0, 256, 512) 显示哪个按钮是默认的。

返回值

常量 描述
mbOK 1 确定
mbCancel 2 取消*
mbAbort 3 中止
mbRetry 4 重试
mbIgnore 5 忽略
mbYes 6
mbNo 7

*如果对话框显示取消按钮,按 Esc 键与单击取消效果相同。

示例

MsgBox("Hello",mbOK, "This is a message box")

此函数返回字符串右侧指定数量的字符。

语法

Right(string, length**)**

参数

Right 函数有以下参数:

string 必需要从中返回右侧字符的字符串表达式。
length 数值表达式,表示要返回的字符数。如果 length 为 0,Right 返回空字符串 (" ")。如果 length大于或等于字符串中的字符数,Right返回整个字符串。

示例

以下示例代码返回 "dbc"。

Right("abcdbc", 3)

Sin

此函数返回一个 Double 值,指定角度的正弦值。

更多信息请参见 Double

Sin 函数接受一个角度并返回直角三角形两条边的比值。该比值是对边长度除以斜边长度。

结果范围在 -1 到 1 之间。

要将度数转换为弧度,将度数乘以 pi/180。要将弧度转换为度数,将弧度乘以 180/pi。

用法

Sin(number)

Sin 函数有以下参数:

number 必需

宏 Spc

任何以弧度表示角度的表达式。如果表达式不是数值类型,则转换为数值类型。

示例

x = sin(y)

Spc

此函数与 Print # 语句或 Print 方法一起使用以定位输出。

更多信息,请参见 Print # 语句或 Print 方法。

用法

Spc(n)

Spc 函数有以下参数:

n 必需
在显示或打印列表中的下一个表达式之前插入的空格数

如果 n 小于输出行宽度,下一个打印位置紧跟在打印的空格数之后。如果 n 大于输出行宽度,Spc 使用以下公式计算下一个打印位置:

currentprintposition + (n Mod width)

例如,如果当前打印位置为 24,输出行宽度为 80,指定 Spc(90),则下一个打印将从位置 34 开始 (当前打印位置 + 90/80 的余数)。如果当前打印位置与输出行宽度之差小于 n (或 n Mod width),Spc 函数跳到下一行开头并生成等于 n - (width currentprintposition) 的空格。

示例

Spc(3)

Str

此函数返回数字的字符串表示形式。

语法

Str(number)

参数

Str 函数有以下参数:

number 必填
任意表达式。如果表达式不是数值类型,则会被转换为数值类型。

当数字转换为字符串时,始终为 number 的符号保留一个前导空格。如果 number 为正数,返回的字符串包含一个前导空格,加号被隐含表示。

示例

x = Str(324)

Tab

此函数与 Print # 语句或 Print 方法一起使用来定位输出。

更多信息请参见 Print # 语句或 Print 方法。

用法

Tab[(n)]

Tab 函数有以下参数:

n 可选
在显示或打印列表中的下一个表达式之前要移动到的列号

如果省略 n,Tab 将插入点移动到下一个打印区域的开始处。这允许您在使用逗号作为小数分隔符时使用 Tab 代替逗号。

如果当前行上的当前打印位置大于 n,Tab 会跳到下一输出行的第 n 列。如果 n 小于 1,Tab 将打印位置移动到第 1 列。如果 n 大于输出行宽度,Tab 使用以下公式计算下一个打印位置:

n Mod width

例如,如果 width 为 80 且您指定 Tab(90),则下一个打印将从第 10 列开始(90/80 的余数)。如果 n 小于当前打印位置,打印将从计算出的打印位置在下一行开始。如果计算出的打印位置大于当前打印位置,打印将从同一行上计算出的打印位置开始。

输出行上最左侧的打印位置始终为 1。当您使用 b 语句打印到文件时,最右侧的打印位置是输出文件的当前宽度,您可以使用 Width # 语句设置。

示例

Tab(2)

Val

此函数返回字符串中包含的数字作为适当类型的数值。

语法

Val(string)

参数

Val 函数有以下参数:

string 必填
任何有效的字符串表达式

Val 函数在遇到第一个无法识别为数字部分的字符时停止读取字符串。但是,该函数能识别进制前缀 &O(八进制)和 &H(十六进制)。空格、制表符和换行符将从参数中去除。Val 函数仅识别句点 (.) 作为有效的小数分隔符。

示例

i=Val("123")

自动化支持

程序中的宏引擎通过其自动化对象支持自动化。使用 CreateObject( ) 创建对象或使用 GetObject( ) 连接对象后,可以使用常规语法调用对象的方法。

Object.Method arg1, ..., argn var = Object.Method( arg1, ..., argn ) var = Object.Property Object.Property = expression

相关主题

CreateObject

GetObject

对话框控件

本程序的宏语言使用以下对话框控件:

CheckBox CheckListBox ComboBox EditBox GridControl ListBox PushButton RadioBox SliderControl SpinButton TabControl TreeItem TreeView

CheckBox

此控件表示对话框上的复选框。您可以使用对话框的 Control 方法引用特定复选框。CheckBox 对象使用 State 和 Property 方法。

State

此方法设置复选框的状态。

语法

checkbox.State(iState)

参数

State 有以下参数:

iState 必填
数值表达式,表示要设置的复选框状态

iState 可以有以下值之一:

表 18. CheckBox.State istate 值

描述
0 或 False 未选中✅
1 或 True 选中✅

表 18. CheckBox.State istate 值(续)

2不确定

Value 属性

此方法返回或设置复选框控件的状态。

语法

checkbox.Value[=iState]

参数

Value 属性有以下参数:

iState 必填
数值表达式,表示要设置的复选框状态

iState 可以有以下值之一:

表 19. CheckBox.Value istate 值

描述
0 或 False 未选中✅
1 或 True 选中✅
2 不确定

CheckListBox

此控件表示对话框上的复选列表框。

State

此方法设置复选列表框的选择状态。

语法

CheckListBox.State(string)

参数

State 方法有以下参数:

string 必填任何有效的字符串表达式,包含要选择的项目列表

SetCheck for CheckListBox

此方法设置复选列表框的选中✅状态。

语法

CheckListBox.SetCheck(string)

参数

SetCheck 方法有以下参数:

string 必填
字符串表达式,包含要选中✅的项目列表。列表中未出现的所有项目将不被选中✅。

ListCount Property for CheckListBox

此方法返回复选列表框中的项目数。

语法

CheckListBox.ListCount

SelCount Property for CheckListBox

此方法返回复选列表框中选中✅的项目数。

语法

CheckListBox.SelCount

Selected Property for CheckListBox

此方法返回或设置复选列表框中项目的选中✅状态。此属性是一个布尔值数组,其项目数与 List 属性相同。

语法

CheckListBox.Selected(index)[=boolean]

Check Property for CheckListBox

此方法返回或设置复选列表框中项目的选中✅状态。此属性是一个布尔值数组,其项目数与 list 属性相同。

语法

CheckListBox.Check(index)[=boolean]

Text Property for CheckListBox

此方法返回复选列表框中当前选中✅项目的文本。

语法

CheckListBox.Text

ComboBox

此控件表示对话框上的组合框。

Select

此方法设置组合框的选择状态。

语法

ComboBox.Select(string)

参数

Select 方法有以下参数:

string 必填
字符串表达式,包含要在组合框中选择的字符串

示例

ActiveLayer.Select("Top")

Edit for ComboBox

此方法设置组合框的编辑状态。

语法

ComboBox.Edit(string)

Edit 方法有以下参数:

string 必填
字符串表达式,包含要插入到组合框编辑框中的字符串

Text Property for ComboBox

此方法返回或设置组合框文本。

语法

ComboBox.Text[=string]

参数

Text 方法有以下参数:

string 必填
字符串表达式,包含要设置到组合框中的文本

List Property for ComboBox

此方法返回或设置组合框列表中包含的项目。此列表是一个字符串数组,其中每个元素都是一个列表项。

语法

ComboBox.List(index)

SelStart Property for ComboBox

此方法返回或设置选定文本的起始点。如果未选择文本,此方法指示插入点的位置。

语法

ComboBox.SelStart[=index]

SelLength Property for ComboBox

此方法返回或设置选定的字符数。

语法

ComboBox.SelLength[=number]

SelText Property for ComboBox

此方法返回或设置包含当前选定文本的字符串。如果未选择字符,此方法返回零长度字符串 ("")。

语法

ComboBox.SelText[=string]

参数

参数是一个字符串表达式,包含要设置到编辑框中的文本。

编辑框

该控件表示对话框上的编辑框。您可以使用对话框的 Control 方法引用特定编辑框。

状态

此方法设置编辑框的状态。

语法

EditBox.State(string)

参数

State 方法有以下参数:

string 必选
要显示在编辑框中的文本字符串表达式

编辑框的 Text 属性

此方法返回或设置编辑框文本。

语法

EditBox.Text[=string]

string 参数是一个字符串表达式,包含要设置到编辑框中的文本。

编辑框的 SelStart 属性

此方法返回或设置选定文本的起始点。如果未选择文本,则指示插入点位置。

语法

EditBox.SelStart[=index]

编辑框的 SelLength 属性

此方法返回或设置选定字符的数量。

语法

EditBox.SelLength[=number]

编辑框的 SelText 属性

此方法返回或设置包含当前选定文本的字符串。如果未选择字符,则返回空字符串("")。

语法

EditBox.SelText[=string]

参数

SelText 方法有以下参数:

string 一个字符串表达式,包含要设置到编辑框中的文本

网格控件

该控件表示对话框上的网格控件。您可以使用 control 方法引用特定网格控件。

列表框

该控件表示对话框上的列表框。

状态

此方法设置列表框的选择状态。

语法

ListBox.State(string)

参数

State 方法有以下参数:

string 必选
包含要选择的项目编号的字符串表达式。列表中未出现的所有项目都不会被选中✅。

List 属性

此方法返回对话框列表部分包含的项目。该列表是一个字符串数组,其中每个元素都是一个列表项。

语法

ListBox.List

ListCount 属性

此方法返回列表框中项目的数量。

语法

ListBox.ListCount

SelCount 属性

此方法返回列表框中选定项目的数量。

语法

ListBox.SelCount

Selected 属性

此方法返回或设置列表框中项目的选择状态。此属性是一个布尔值数组,其项目数量与 list 属性相同。

语法

ListBox.Selected(index) [=boolean]

Text 属性

此方法返回列表框中当前选定(聚焦)项目的文本。

语法

ListBox.Text

按钮

该控件表示对话框上的按钮(也称为命令按钮)。

Click

此方法模拟按下按钮。

语法

button.Click()

示例

dlg.control("OK").click()

单选按钮

该控件表示对话框上的选项按钮。

状态

此方法检查选项按钮的状态。

语法

RadioBox.State(iState)

参数

State 方法有以下参数:

iState 必选
表示要检查的选项按钮位置的数值表达式。-1 表示未选择任何按钮。

单选按钮的 Value 属性

此方法返回或检查选项按钮的状态。

语法

RadioBox.Value[=iState]

参数

Value 属性有以下参数:

iState 必选
表示要检查的选项按钮位置的数值表达式。-1 表示未选择任何按钮。

滑块控件

该控件表示对话框上的滑块控件。

状态

此方法设置滑块的状态。

语法

SliderControl.State(iState)

参数

State 有以下参数:

滑块控件的 Value 属性

此方法返回或设置当前滑块位置。

语法

Slider.Value[=val]

参数

Value 属性有以下参数:

微调按钮

该控件表示对话框上的微调按钮。

状态

此方法设置微调按钮的状态。

语法

SpinButton.State(iState)

参数

State 有以下参数:

iState 必选
一个数值表达式

标签控件

该控件表示对话框上的标签。

状态

此方法设置标签的选择状态。

语法

TabControl.State(iState)

参数

State 有以下参数:

iState 必选
表示标签位置的数值表达式。

示例

dlg.Control("Tab").State(3)

Value 属性

此方法返回或设置当前标签位置。

语法

TabControl.Value[=tab]

参数

SailWind Logic 命令参考 395

Value 属性有以下参数:

tab 必选
表示标签位置的数值表达式或表示标签标题的字符串表达式

树项

该控件表示对话框上的一个树项。

Select 方法(树项)

此方法设置树项的选中✅状态。

语法

TreeItem.Select(flag)

参数

Select 方法有以下参数:

flag 必选
数值表达式

flag 可取值如下:

表 20. TreeItem.Select flag 取值

描述
0 或 False 取消选中✅
1 或 True 选中✅

示例

item.Select(true)

Expand 方法(树项)

此方法设置树项的展开状态。

语法

TreeItem.Expand(flag)

参数

Expand 方法有以下参数:

flag 必选

数值表达式

flag 可取值如下:

表 21. TreeItem.Expand flag 取值

描述
0 或 False 折叠
1 或 True 展开

示例

item.Expand(true)

Focus 方法(树项)

此方法将树项焦点设置到该项。

语法

TreeItem.Focus()

示例

item.Focus(1)

树视图

该控件表示对话框上的树视图。

Item 方法

此方法返回一个 TreeItem 对象。

语法

TreeView.Item(itemname)

参数

Item 方法有以下参数:

itemname 必选
字符串表达式,表示项的名称

示例

item = tree.Item("Net Objects\Nets\end")

BeginDrag 方法

宏树视图

此方法模拟将选中✅项拖出树的操作。

语法

TreeView.BeginDrag(itemname)

参数

BeginDrag 方法有以下参数:

itemname 必选
字符串表达式,表示要拖动的项的名称

Copy 方法

此方法将选中✅项复制到剪贴板。

语法

TreeView.Copy(itemname)

参数

Copy 方法有以下参数:

itemname 必选
字符串表达式,表示要复制的项的名称

Drop 方法

此方法模拟将拖动的项放到目标项上。

语法

TreeView.Drop(itemname)

参数

Drop 方法有以下参数:

itemname 必选
字符串表达式,表示要将拖动项放置到的目标项名称dragged items

示例

tree.Drop("Net Objects\Net classes")

Paste 方法

此方法将剪贴板内容粘贴到选中✅分支。

语法

TreeView.Paste(itemname)

参数

Paste 方法有以下参数:

itemname 必选
字符串表达式,表示要粘贴到的项的名称

CreateNewItem 方法

此方法在选中✅分支创建新项。此方法返回一个对应于所创建项的 TreeItem 对象。

语法

TreeView.CreateNewItem(itemname)

参数

CreateNewItem 方法有以下参数:

itemname 必选
字符串表达式,表示要创建的项的名称

内部宏对象

本程序的内部宏对象包括以下内容:

Application 对象 Dialog 对象 Document 对象 HelpContents 对象 HelpContentsItem 对象 HelpPane 对象 主视图 对象

Application 对象

该对象表示程序的应用程序。该对象有以下方法:

CreateNewDocument ExecuteCommand Help HelpContents HelpPane OpenCustomizeDialog OpenDocument OpenOptionsDialog OpenPropertiesDialog Quit RunMacro

CreateNewDocument 方法

此方法创建一个空文档。

语法

Application.CreateNewDocument

参数

ExecuteCommand 方法

此方法执行程序的一个命令。

语法

Application.ExecuteCommand(command, [arg1,...])

参数

ExecuteCommand 方法有以下参数:

command 必选字符串表达式,表示 SailWind 产品命令
arg1, 可选表示传递给命令的可选参数

示例

Application.ExecuteCommand("ID_VIEW_BOARD")

Application.ExecuteCommand("Open", "C:\SailWind Projects\preview.pcb")

宏帮助

Help 方法

此方法调用帮助系统。

语法

Application.Help()

参数

HelpContents 方法

此方法在帮助内容窗口中返回帮助内容。

语法

Application.HelpContents

参数

示例

Set var = Application.HelpContents

宏 HelpPane

HelpPane

此方法返回帮助窗口。

语法

Application.HelpPane

参数

示例

Set var = Application.HelpPane

OpenCustomizeDialog

此方法打开自定义模态对话框。

语法

Application.OpenCustomizeDialog()

参数

OpenDocument

此方法打开由路径参数指定的现有文档。

语法

Application.OpenDocument(path)

参数

OpenDocument 方法有以下参数:

示例

Application.OpenDocument("C:\SailWind Projects\preview.pcb") \

OpenOptionsDialog

此方法打开选项无模对话框。

语法

Application.OpenOptionsDialog()

参数

OpenPropertiesDialog

此方法打开属性无模对话框。

语法

Application.OpenPropertiesDialog()

参数

Quit

此方法退出应用程序。

语法

Application.Quit()

参数

RunMacro

此方法执行程序命令之一。

语法

Application.RunMacro(path[, function [, arg1, ...]])

参数

RunMacro 方法有以下参数:

path 必需包含要运行的宏文件路径的字符串表达式
function 可选要调用的宏文件中函数或子程序的名称。如果指定了函数,RunMacro 返回该函数的返回值。如果未指定函数,或者它是一个不返回任何内容的子程序,则 RunMacro 返回无。
arg1, 可选传递给函数的参数

示例

Application.RunMacro("C:\SailWind Projects\mymacro.mcr")
Var = Application.RunMacro("C:\SailWind Projects\mymacro.mcr", myfunction", 1, 2, 3)

Dialog Objects

对话框对象表示一个对话框。该对象有以下方法:

Control Focus CloseHelpPane OpenHelpPane ShowHelpFor

宏控制

Control

此方法返回对话框控件。

语法

Dialog.Control(controlname)

参数

Control 方法有以下参数:

controlname 必需
表示控件名称的字符串表达式

示例

此示例返回 OK 按钮。

set obj = dlg.Control("OK")

相关主题

Focus

Focus

此方法将焦点设置到对话框控件。

语法

Dialog.Focus(controlname)

参数

Focus 方法有以下参数:

controlname 必需
表示控件名称的字符串表达式

相关主题

Control

CloseHelpPane

此方法关闭对话框中的帮助窗格。

语法

Dialog.CloseHelpPane

参数

示例

Dialog.CloseHelpPane

OpenHelpPane

此方法显示对话框的帮助窗格。

语法

Dialog.OpenHelpPane

参数

示例

Dialog.OpenHelpPane

ShowHelpFor

此方法显示指定控件的帮助信息。

语法

Dialog.ShowHelpFor(controlname)

参数

ShowHelpFor 方法有以下参数:

controlname 必需
控件的名称

示例

此示例显示 Apply 按钮的帮助信息。

Dialog.ShowHelpFor("Apply")

Document Object

Document 对象表示任何当前加载的设计。

该对象有以下方法:

Print PrintSetup RepeatLastAction Save SaveAs

宏打印

此方法打印文档。

语法

Document.Print()

参数

PrintSetup

此方法打开打印设置对话框。

语法

Document.PrintSetup()

参数

RepeatLastAction

此方法重复当前会话中执行的最后一个操作。

语法

Document.RepeatLastAction()

参数

Save

此方法保存文档(如果已修改)。

语法

Document.Save()

参数

SaveAs

此方法将文档保存为用户定义的名称或路径位置。

用法

Document.SaveAs(path)

SaveAs 方法有以下参数:

path 必需 表示文档保存路径的字符串表达式

参数

HelpContents 对象

HelpContents 对象表示帮助内容窗口。Item 属性用于在内容树中查找帮助内容项的位置。

语法

Application.HelpContents.Item (path)

参数

示例

Set item = Application.HelpContents.Item("File Operations\To Restore Files")

HelpContentsItem 对象

该对象用于查找帮助内容项的名称。

HelpContentsItem 对象具有以下属性和一个方法 (Select):

Location Name Select SubItem SubItemCount Macros Location

Location

该属性返回项的位置。

语法

Item.Location

参数

示例

在此示例中,item_loc 变量被赋值为 "its:C:<install_folder><version> \Documentation\Router\BlazeRouter.chm::/fileops/To_Restore_Files.htm"。

Set item = Application.HelpContents.Item("File Operations\To Restore Files")

item_loc = item.Location

Name

该属性返回项的名称。

语法

Item.Name

参数

示例

在此示例中,item_name 变量被赋值为 "To Restore Files"。

Set item = Application.HelpContents.Item("File Operations\To Restore Files")

item_name = item.Name

Macros Select

Select

该方法用于选择项。

语法

Item.Select

参数

示例

Set item = Application.HelpContents.Item("File Operations").SubItem(3)

item.Select

SubItem

该属性通过位置返回项的子项。必需的整数 pos 参数是该项表示的树分支中子项的从零开始的序列号。

语法

Item.SubItem(pos)

参数

示例

在此示例中,item_name 变量被赋值为 "To Restore Files"。

Set item = Application.HelpContents.Item("File Operations").SubItem(3)

item_name = item.Name

SubItemCount

该属性返回项中子项的数量。

语法

Item.SubItemCount

参数

示例

在此示例中,count 变量被赋值为 10。

Set item = Application.HelpContents.Item("File Operations")
count = item.SubItemCount

HelpPane 对象

该对象表示帮助窗口。

Document

Document 属性在帮助窗口中显示 HTML 文档。此属性使用文档对象模型 (DOM)。有关 HTMLDocument 接口的完整描述,请参阅 Microsoft 软件开发人员网络 (MSDN) 文档。

以下是宏引擎使用的最有用属性:

title 设置或检索文档标题。此属性在文档窗口的标题栏中显示文档标题。同时,它标识文档内容。
URL 设置或检索当前文档的统一资源定位符 (URL)。

相关主题

内部宏对象

MainView 对象

MainView 对象表示程序的主视图。

该对象使用以下方法:

ActiveLayer ToggleFullScreen MouseDown MouseEndDrag MouseMove MouseStartDrag MouseUp Print PrintPreview

Macros ActiveLayer

ActiveLayer

该方法显示活动层组合框。

语法

MainView.ActiveLayer

参数

示例

set layerCombo = MainView.ActiveLayer

ToggleFullScreen

该方法开启全屏模式。

语法

MainView.ToggleFullScreen()

参数

MouseDown

该方法模拟按下鼠标按钮。

语法

MainView.MouseDown(x, y, button)

参数

MouseDown 方法有以下参数:

x 必需任意数值表达式指针的 X 坐标
y 必需任意数值表达式指针的 Y 坐标
button 必需字符串表达式按下的按钮(如果有)

button 参数可以包含以下一个或多个值和修饰符:

表 22. MainView.MouseDown button 值

描述
L 按下左鼠标按钮
M 按下中鼠标按钮
R 按下右鼠标按钮
C 按下 Ctrl 按钮(修饰符)
S 按下 Shift 按钮(修饰符)
A 按下 Alt 按钮(修饰符)

MouseEndDrag

该方法模拟结束鼠标拖动操作。

语法

MainView.MouseEndDrag(x, y, button)

参数

Mouse End Drag 方法有以下参数:

x 必需任意数值表达式指针的 X 坐标
y 必需任意数值表达式指针的 Y 坐标
button 必需字符串表达式按下的按钮(如果有)

button 参数可以包含以下一个或多个值和修饰符:

表 23. MainView.MouseEndDrag button 值

描述
按下左鼠标按钮
按下中鼠标按钮
按下右鼠标按钮
按下 Ctrl 按钮(修饰符)
按下 Shift 按钮(修饰符)
按下 Alt 按钮(修饰符)

MouseMove

该方法模拟移动鼠标。

语法

MainView.MouseMove(x, y, button)

参数

Mouse Move 方法有以下参数:

x 必需任意数值表达式指针的 X 坐标
y 必需任意数值表达式指针的 Y 坐标
button 必需字符串表达式+ 表示相对模式按下的按钮(如果有)

button 参数可以包含以下一个或多个值和修饰符:

表 24. MainView.MouseMove button 值

描述
L 按下左鼠标按钮
M 按下中鼠标按钮
R 按下右鼠标按钮
C 按下 Ctrl 按钮(修饰符)
S 按下 Shift 按钮(修饰符)
A 按下 Alt 按钮(修饰符)

示例

MainView.MouseMove(300,350,"+L")

MouseStartDrag

此方法模拟开始鼠标拖拽操作。

语法

MainView.MouseStartDrag(x, y, button)

参数

MouseStartDrag 方法包含以下参数:

x 必选任意数值表达式指针的 X 坐标
y 必选任意数值表达式指针的 Y 坐标
button 必选字符串表达式按下的按钮(如有)

button 参数可包含以下一个或多个值和修饰符:

表 25. MainView.MouseStartDrag button 取值

描述
L 按下鼠标左键
M 按下鼠标中键
R 按下鼠标右键
C 按下 Ctrl 键(修饰符)
S 按下 Shift 键(修饰符)
A 按下 Alt 键(修饰符)

MouseUp

此方法模拟释放鼠标按钮。

用法

MainView.MouseUp(x, y, button)

MouseUp 方法包含以下参数:

x 必选任意数值表达式指针的 X 坐标
y 必选任意数值表达式指针的 Y 坐标
button 必选字符串表达式按下的按钮(如有)

button 参数可包含以下一个或多个值和修饰符:

A 按下 Alt 键(修饰符)

表 26. MainView.MouseUp button 取值
描述
L 按下鼠标左键
M 按下鼠标中键
R 按下鼠标右键
C 按下 Ctrl 键(修饰符)
S 按下 Shift 键(修饰符)

参数

此方法打印当前视图。

语法

MainView.Print()

参数

PrintPreview

此方法开启打印预览模式。

语法

MainView.PrintPreview()

参数