|
|
语法体系
1、变量的类型:
| 类型 | 描述 |
|---|---|
整数型 |
范围在-2147483648到2147483647之间。如果前面带“$”表示后面是十六进制数。如$FF等于255 |
小数型 |
范围在1.7*10-308到1.7*10+308之间,小数位数最多9位 |
逻辑型 |
True(表示真)与False(表示假) |
字符串型 |
用单引号或双引号对表示的一串文字,文字串可以相加 |
数组型 |
用Array函数创建的动态数组,每个元素可以是任何类型 |
类 |
点类、图形单元类、页面类、视图类、连接点类、系统参数类等等 |
2、变量的声明:
Visual Graph脚本语言中的变量类型都是隐含的,声明一个变量,只要直接给他赋值即可。关于变量的名称请参见名字命名法。
| 定义 | 描述 |
|---|---|
| N=123 | 定义N为整数型,且等于123 |
| N=3.14159 | 定义N为小数型,且等于3.14159 |
| N=True | 定义N为逻辑型,且等于True(真) |
| N="合计" | 定义N为文字型,且等于“合计” |
| A=Array(30) | 定义A为数组型 |
| A[30]="ABC" | 如果数组A在声明时元素数目不足31,这里的赋值自动扩大数组的容量,并把最后一个元素定为"ABC" |
| N=A[30] | 如果数组A在声明时元素数目不足31,报错 |
| p=Point(x,y) | 定义p为“点”类,点类有两个属性p.x和p.y都是小数 |
| N=Text1 | 这里,如果Text1代表单元,可以赋值给其他变量,这里N被定义成文字单元类 |
3、初始变量
consts.bas脚本程序在系统启动时自动执行,其中定义的变量为初始变量,可以被整个系统各个视图各个页面所访问。当在一个视图中改变了这个变量的值,其他视图读取时也是修改后的值。
4、全局变量
在页面的Initialize事件中定义的变量可以在该页面的其他任何事件处理程序中访问。我们把它叫做全局变量。
5、局部变量
在除了Initialize外的任何其他事件中定义的变量均为局部变量,只能在事件中被访问,该事件结束后,变量即被释放。
6、运算符:
|
符号 |
名称 |
说明 |
|---|---|---|
|
+ |
加号 | 1、数字相加。 2、字符串相加。 |
|
- |
减号 | 数字减法。 |
|
* |
乘号 | 数字乘法。 |
|
/ |
除号 | 数字除法。 |
|
^ |
乘方号 | 数字乘方。 |
|
> |
大于号 | 数字比较。 |
|
< |
小于号 | 数字比较 |
|
>= |
大于等于号 | 数字比较 |
|
<= |
小于等于号 | 数字比较 |
|
= |
等于号 |
1、数字、字符串、逻辑值、对象等比较是否相等。 |
|
<> |
不等于号 | 1、数字、字符串、逻辑值、对象比较。 |
|
and |
逻辑与 | 两个逻辑值的“与”运算。只有当两个逻辑值都是true的时候,才返回true,否则返回false。逻辑与的优先级要比上面的符号小。例如2<3 and 3>4 返回false。 |
|
not |
逻辑非 | 一个逻辑值的“非”运算。当逻辑值是false的时候,返回true,否则返回false。逻辑非的优先级要比上面的符号小。例如not 2 < 3返回false。 |
|
or |
逻辑或 | 两个逻辑值的“或”运算。只有当两个逻辑值都是false的时候,才返回false,否则返回true。逻辑或的优先级要比上面的符号小。例如2<3 or false 返回true。 |
|
() |
圆括号 | 1、函数中使用,例如:ShowMessage( "Hello" ) 2、表达式中使用,例如:if( ( 2 < 3 ) or true ) |
|
[] |
方括号 | 1、表示数组的元素,从0开始。例如:ar = Array(2); ar[0]=100给第一个数组元素赋值。 2、表示页面集合Sheets、单元集Units、单元组集Groups的元素,从0开始。例如Sheets[0]表示第一个页面,Units[0]表示页面上的最下面一个单元,Groups[0]表示第一个单元组。 3、表示字符串的某个字符,从0开始。例如:ptr = "Hello"; ptr[0]返回字符'H'的Ascii码。 |
|
, |
逗号 | 在函数调用中使用,作为参数的分割。例如:str( 3.1416, 2 )返回字符串"3.14"。 |
|
; |
分号 | 语句分割号。用于在一行中连接两条语句。例如:ar=Array(2);ar[0]=100写在一行。 |
|
'' |
单引号 | 表示字符串,可以包含双引号字符串,另外,若一个单引号在行首,表示该行是注释。 |
|
"" |
双引号 | 表示字符串,可以包含单引号字符串 |
7、条件表达式:
条件表达式主要用于IF、WHILE判断语句,它必须返回逻辑型的值,如:
( x < 10 ) and ( y < 10 )
not Text1.Visible
UnitCount > 0
8、条件判断语句:
判断一个表达式是否为真,若是真,执行一段代码,若不是真,执行其他代码。
if <条件表达式1> then
条件表达式1等于true时执行的程序
else if <条件表达式2> then
条件表达式2等于true时执行的程序
else
条件不满足时执行的程序
end if
下面是一个Visual Graph脚本示例,判断当前鼠标位置有没有图形单元:
d=ActiveSheet.UnitAtCursor( 0 )
if d <> 0 then
ShowMessage( "当前光标位置的图形单元是:" + d.Name )
else
ShowMessage( "当前光标位置没有图形单元" )
end if
9、循环语句:
While <条件表达式>
......
Wend
如果条件表达式返回true,循环执行程序,否则跳出循环,在循环程序中使用Break关键字也可跳出循环。
下面是一个Visual Graph脚本示例,判断当前画面上是否有文字单元,如果找到,跳出循环:
i=0
While i < ActiveSheet.UnitCount
if ActiveSheet.Units[i].ClassName = "text" then
ShowMessage( "找到了文字单元!" )
break
end if
i = i + 1
Wend
10、返回语句:
从当前执行的过程中返回到调用者,
Return [返回值]
下面是两个Visual Graph脚本语言的函数示例:
private function Func1( x, y )
Return x * x + y * y
end function
private function Func2( x, y )
ShowMessage( CStr( x * x + y * y ) )
end function
当我们执行表达式:x=Func1(3,4)时,运行正常,x得到函数的返回值25。
当我们执行表达式:x=Func2(3,4)时,弹出一个对话盒,显示25,关闭这个对话盒后,报错,因Func2没有定义返回值。
11、外部函数:
extern 返回值类型=函数名(参数1的类型,参数2的类型......) in 动态库名 [name 动态库中的函数名]
参数的类型有5种:int(整数)、double(小数)、bool(逻辑型)、string(字符串)、var(其他)。返回值类型则除了这5种外,还有void(无返回)类型。
等号后面的函数名是可为Visual Graph调用的,而name后的内容是动态库中函数的真实名字。name句也可以不写,则等号后面的函数名代表在动态库中函数的名称。
下面是一个引用Windows API函数的例子:
extern int=MessageBox(int,string,string,int) in User32.dll name MessageBoxW
MessageBox(Handle,"hello",0,0)
12、系统常量
一、FontNames数组,包含当前可用的所有字体名。
二、Patterns数组,包含当前可用的所有网纹,在dat目录下的Patterns.tbl文件中,都是一个个页面,每个页面中都是一个图案。
三、Cursors数组,包含当前可用的所有光标。在dat目录下的Cursors.tbl文件中,都是一个个页面,每个页面中都是一个个32x32的位图。
四、LineTypes数组,包含当前可用的所有线型。都是用逗号分割的一系列数字。参见LineType。
五、Arrows数组,包含当前可用的所有箭头。在dat目录下的Arrows.tbl文件中,都是一个个页面,每个页面上都是一些线条。
13、内部函数
| 函数名 | 描述 | 函数名 | 描述 |
| Abs | 计算数字的绝对值 | Len | 求字符串的长度 |
| Acos | 求数字的反余弦值 | Log | 求自然对数 |
| Array | 创建并返回动态数组 | Mod | 求两个整数的余数 |
| Asc | 求文字串首字符的ASCII值 | Point | 创建并返回一点类 |
| Asin | 求数值的反正弦 | PointToAngle | 求一个点相对另一个点的角度 |
| At | 求一个字符串在另一个字符串中的位置值 | Random | 求一个随机整数 |
| Atan | 求数字的反正切值 | Randomize | 重置随机数 |
| Chr | 把0到255的数字转换成字符 | Round | 数字四舍五入取整 |
| Cos | 计算数字的余弦 | ShowMessage | 弹出一个对话盒,显示一条信息 |
| Create | 创建一个视图窗口 | Sin | 求正弦值 |
| CStr | 表达式转换成字符串 | Space | 建立空格字符串 |
| Date | 求当前日期的字符串值 | Sqr | 计算数字的平方 |
| Exp | 求指数函数ex的运算结果 | Sqrt | 求数字的平方根 |
| GetCursorPos | 取得当前鼠标位置的屏幕坐标 | Str | 把小数转换成字符串 |
| GetFocusedText | 返回当前拥有焦点的文字单元 | Substr | 取字符串的子串 |
| GetURL | 执行一个web请求,返回这个请求的结果 | Tan | 求正切值 |
| GetVersion | 返回Visual Graph系统的版本号 | Time | 求当前时间的字符串 |
| Hex | 把整数转换成16进制字符串 | Trace | 弹出一条信息 |
| Int | 求小数的整数部分 | Trim | 消除字符串变量首尾部的空格 |
| IsNumber | 判断某字符串是否是数字 | UCase | 字符串转换成大写字母 |
| IsValidName | 判断字符串是否一个有效的变量名 | Val | 把含数字的字符串转换为数字 |
| LCase | 字符串转换成小写字母 | VarType | 返回指定表达式的类型 |
@2004-2007 北京图王Visual Graph.版权所有. |