1、第1章 的 复习内容,请问第1章中主要介绍了什么内容?当你拿到一个实际项目的时候,你应该分哪几个步骤来完成该项目?在用PowerBuilder来开发项目时,其对象创建的先后顺序如何?请问实验一中的独立实验应该如何实现?,第2章 PowerScript编程,2.1 PowerScript编程环境 2.2 PowerScript语言基础 2.3 PowerScript数据类型 2.4 PowerScript声明语句 2.5 PowerScript运算符 2.6 PowerScript控制语句,2.7 PowerScript常用系统函数 2.8 PowerScript自定义函数 2.9 PowerS
2、cript自定义结构 2.10 本章小结 2.11 本章习题,2.1 PowerScript编程环境,PowerBuilder提供的编程环境实际上就是相关对象画板的脚本(Script)视图,主要用于查看或编写事件和函数的代码、声明变量、常量、外部函数以及创建用户事件等等。,你知道PowerBuilder的哪些对象呢?,应用对象 窗口对象 菜单对象 等事务对象 等,2.1.1 脚本视图的打开,PowerBuilder中几乎所有的对象都可以为之编写相应的脚本程序。当然,在为对象编写脚本代码之前,应该首先打开相应的脚本视图。,对象选择,事件选择,脚本视图,变量声明,2.1.2 脚本视图定制,一般来说
3、,PowerBuilder提供的默认脚本视图已经能够满足绝大多数情况的需要。 当然必要时用户也可以自己对脚本视图进行定制。,2.1.3 自动脚本功能使用,自动脚本功能是一种用来帮助编写脚本代码的辅助功能。它通过在脚本视图中显示上下文相关的属性、函数、事件、变量等信息的列表框以供选择来大幅度地提高编写程序的效率,同时保证了代码输入的正确性。,2.2.1 脚本注释,注释是开发人员针对程序功能人为添加的一些说明性的文字,其本身并不参加程序的编译和执行。Power Script提供的注释方式与C语言完全相同,包括单行注释和多行注释。 例2.1 程序注释的示例:/ 这是放在行开头的注释 cb_1.tex
4、t = “This代词”/* 这是多行注释的开始 cb_1.text = “This代词” 这是多行注释的结束 */,2.2.2 分隔与续行,如果要将多条短语句书写在一行上,可以在多条语句之间使用分隔符分号“;”,如果要将一条长语句分成多行书写,可以在长语句的每个断点处加上续行符号“&”。 例2.2 分隔与续行的示例:分隔:B = B + 1 ;C = C + 1 ;A = B + C 续行:messagebox(“提示“ , “保存信息吗?“, Question! , YesNo! ,1) 可以写成messagebox(“提示“ , “保存信息吗?“, & Question! , YesNo
5、! , 1),2.2.3 标识符,标识符是指在程序代码中用来代表变量、常量、函数、窗口、控件、菜单等名称的符号 .PowerScript中标识符在定义的时候必须遵循以下的规则: 必须以英文字母或者下划线“_”开头; 不能是保留字; 最大长度为40个字符,字符之间不能有空格; 不区分大小写; 只能由字母、数字以及5个特殊字符(“_”、“-”、“$”、“#”、“%”)组成; 例2.3 判断以下列举的标识符中,哪些是对,哪些是错? 标识符:ABC_Code、Child-Id、Actual-$-amount 标识符:2nd-quantity、ABC Code、Childs Id,2.2.4 保留字,保
6、留字是系统预先保留的,提供系统内部使用的标识符。保留字不可以用作用户自定义的标识符,否则系统将给出编译器警告信息。,2.2.5 特殊ASCII字符,PowerBuilder允许用户在字符串中使用特殊ASCII字符。特殊ASCII字符的输入以 “”开头,后接一些普通字符或者数字。,2.2.5 特殊ASCII字符,例2.4 特殊ASCII字符的示例:messagebox(“提示“,“特殊ASCII字符:nn 新行 “ 双引号 nt 制表符 单引号“)消息框的显示界面如图2-6所示。,2.2.6 空值NULL,空值NULL是在与数据库进行交换时使用的一种特殊值,代表数据未定义,它与空字符串“”、空字
7、符、数字0以及日期0000-00-00均不同。 函数SetNull()可以将一个变量赋值为NULL,函数IsNull()可以测试变量或者表达式是否为空值。 例2.5 空值NULL示例: String ls_name SetNull(ls_name) if IsNull(ls_name) thenmessagebox(“提示“, “ls_name为空值“) end if,ls_name = null,2.2.7 常用代词,代词主要有This、Parent、ParentWindow和Super。 This用来指代当前正在为之编写脚本的对象,例如窗口、窗口控件、菜单、应用对象以及用户对象等。实际编程
8、中,This经常可以省略或者直接以对象或者控件的名称代替。 Parent用来指向包含当前对象的父对象。这里的当前对象可以是窗口中的控件、用户对象中的控件或者某个菜单项。 当窗口中的控件使用Parent时,Parent指向包含该控件的窗口; 当用户对象中的控件使用Parent时,Parent指向当前用户对象; 当菜单中使用Parent时,Parent指向当前菜单项的上一级菜单。,2.2.7 常用代词,ParentWindow用来代表当前菜单所关联的窗口,因此仅能在菜单的事件处理程序中使用。 Super用来调用当前子对象所继承的父对象中的事件处理过程或者函数。子对象调用父对象的事件处理过程的语法格
9、式为: Call Super : 或者Super : Event ()调用父对象的函数的语法格式为: Super : ( 参数列表 ),2.3 PowerScript数据类型,PowerScript具有强大的数据处理功能,并为此提供了丰富的数据类型,主要包括以下四类: 标准数据类型 枚举类型 系统对象数据类型 任意(Any)数据类型。不同的数据类型声明将直接影响到变量、常量、数组和其他对象在系统中的存储空间大小以及能表示的具体内容。,2.3.1 标准数据类型, 接后页,2.3.1 标准数据类型,2.3.2 系统对象类型,系统对象类型是一种特殊的数据类型,每一种类型都对应一种系统对象,如窗口、菜
10、单、控件等。对于可视化的系统对象如按钮、文本框等控件,一般不必特意将其作为数据类型来处理,而只需要选择直接使用即可;对于非可视化的系统对象如事务对象(Transaction)则可以按照常见数据类型来处理。 例2.12 系统对象数据类型示例: 假设窗口w_object中有两个按钮分别是cb_1和cb_2,其中两个按钮的文本显示依次为“第一个按钮”和“第二个按钮”,如图2-9所示。当程序运行时单击cb_2,通过消息框显示cb_1的文本内容。,2.3.2 系统对象类型,通常写法: messagebox(“提示“,“通过声明系统对象类型,r得到cb_1的文本内容为“ + cb_1.text + “)
11、系统对象写法: commandbutton cb cb = cb_1 messagebox(“提示“,“通过声明系统对象类型,r得到cb_1的文本内容为“ + cb.text + “),2.3.3 枚举数据类型,枚举类型是PowerBuilder预定义的数据类型,常被用于作为函数的参数,或者用于指定对象或控件的属性。所有枚举类型都以感叹号“!”结尾,并且用户不能定义自己的枚举类型,这一点正是与其他高级语言如C、C+等不同的地方。,2.3.4 Any数据类型,Any数据类型是一种可变的数据类型,它可以存储包括标准数据类型、系统对象数据类型、数组以及结构等在内的各种类型的值。对某Any类型的变量赋
12、值之后,可以使用函数ClassName()来获得Any类型变量中保存数据的实际类型。,例2.14 Any数据类型示例: Any a_value String s_type a_value = 3.45 s_type = ClassName(a_value) messagebox(“提示“,s_type),2.3.5数据类型转换函数,实际开发过程中,不同的数据类型之间常常需要实现彼此之间的转换,转换操作必须依赖于数据类型转换函数来实现。,2.3.6数据类型检查函数,数据类型检查函数常用来检查字符串中内容是否为合法值。,2.4 PowerScript声明语句,在PowerBuilder中,除系统预
13、定义的5个全局变量(SQLCA、SQLDA、SQLSA、Error、Message)外,其他使用的所有变量、常量以及数组等和其他程序设计语言如C+一样,遵从先定义、后使用的原则,以便编译时进行存储空间的分配。,2.4.1变量声明,变量是指在程序的运行过程中,其值可以被改变的量。PowerBuilder中简单变量的声明只需要说明数据类型和变量名即可。 其声明的格式为:=,=, 其中“=”为赋值符号。如果一次声明多个变量,需要在变量之间使用“,”间隔。例2.15 变量声明示例: int i long k=123456 date today , birthday char c=“A“ string
14、my_address=“Hello“,2.4.1变量声明,变量被声明后,若未指定初值,则系统赋予默认值。变量的数据类型不同,系统赋予的默认值也不一样。,2.4.1变量声明,变量作用域决定了变量在程序中的哪些地方可以被访问。根据作用范围的不同,变量分为四种类型,即 Global Variables (全局变量)、Instance Variables (实例变量)、Shared Variables (共享变量)以及 Local Variables (局部变量)。 全局变量可以在整个应用程序中访问,存储在应用对象中。一般情况下不建议使用全局变量,因为这会降低程序的可读性。局部变量只能在相应的事件或函
15、数脚本中定义,事件或函数脚本执行完毕后,相应的变量也就撤销了。,2.4.1变量声明,实例变量与具体的对象实例相关联,可以将其看作是对象实例的一个新增属性。对于一个具体的实例变量,可以在其所关联的对象实例的事件或函数(同时包括了该对象的所有控件的事件及函数)被访问,是一种局部的全局变量。实例变量在其所关联的对象被打开时创建,被关闭时释放。共享变量属于一个对象并且可以被该对象的所有实例所访问。当一个对象实例关闭时,共享变量的值保持不变;当再次打开这个对象实例时,可以继续使用关闭前的值。对于同一对象的所有实例,共享变量的值始终保持不变。,2.4.1变量声明,变量的声明位置直接决定了变量的作用域。 局
16、部变量在使用该变量的程序段代码中直接声明和使用,而全局变量、共享变量和实例变量则在窗口、菜单等对象的Script窗口中进行声明。,2.4.1变量声明,实例变量与局部变量的区别: 请思考以下问题 在窗口的clicked事件中编写代码,要求程序能够辨认当前鼠标在窗口上单击的次数.实例变量与共享变量的区别: 请思考以下问题 在窗口的clicked事件中编写代码打开一个新的窗口,同时在新打开的窗口的标题栏上显示这是该窗口第几次被打开.,2.4.2常量声明,常量是指在程序的运行过程中,其值一直保持不变的量。常量的声明与变量类似,不过存在以下两点不同: 声明时需要在数据类型前用关键词CONSTANT修饰;
17、 声明时必须给常量赋初值。常量的声明格式为: CONSTANT = ,=, 其中“=”为赋值符号。如果一次声明多个常量,需要在常量之间使用“,”间隔。例2.16 常量声明示例: CONSTANT int age=23 CONSTANT string city=“温州“,2.4.3数组声明,数组是具有一定顺序关系且数据类型相同的若干个元素组成的集合。数组中的各个变量通常称为数组元素,数组元素通过下标进行访问。数组的声明格式为: = 初值表 其中,数组元素的个数可以省略,但方括号不能省略。如果省略数组元素的个数,则该数组被声明为动态数组。缺省情况下数组元素的下标从1开始。如果一次声明多个数组,需要
18、在数组名称之间使用逗号“,”间隔。如果定义多维数组,下标之间用逗号分开。,例2.17 数组声明示例: int scores30 int scores 2 to 10 string address = “温州“,“杭州“,“台州“ real val5,5,2.5 PowerScript运算符,运算符用于构造各种表达式,以便完成一定的运算。PowerScript提供的运算符主要包括4种: 算术运算符 关系运算符 逻辑运算符 连接运算符。,2.5.1算术运算符,算术运算符用于构成算术表达式,完成加、减、乘、除和乘方5种算术运算。,2.5.2关系运算符,关系运算符用于两个可以比较的数据类型之间的关系比
19、较,其结果为True或者False。,字符串的大小如何进行比较?,2.5.3逻辑运算符,逻辑运算符用于完成布尔类型的值的逻辑运算,其结果为True或者False或者Null。,2.5.4连接运算符,连接运算符主要用于把两个String类型变量或者Blob类型变量的内容连接在一起,从而形成新的字符串或者二进制大对象数据。PowerScript提供的连接运算符只有一个,就是符号“+”。,例2.18 字符串连接的示例如下: String FirstName , LastName , FullName FirstName = “shen” LastName = “John” FullName = La
20、stName + FirstName,2.5.5运算符优先级,在由运算符构成的表达式中,其运算需要按照运算符的特定次序进行,这一特定的次序由运算符的优先级决定。,2.6 PowerScript控制语句,PowerScript控制语句主要用于控制程序流程.。 赋值语句 条件语句 循环语句 。,2.6.1赋值语句,赋值语句用于把一个常量、变量或者是表达式的结果赋值给变量、对象的属性。其语法格式为: variablename = expression 赋值语句两边的数据类型应该一致,否则需要数据类型转换函数进行转换。 例2.20 赋值语句示例: ls_name = “Johnshen” li_age
21、 = 23在PowerScript中,赋值号与关系运算符的“=”是相同的,因此不能在一条语句中给多个变量赋值。 li_a = li_b = 3,2.6.2条件语句,IF语句 单行if语句的语法格式为: IF condition THEN action1 Else action2 例2.21 单行IF语句示例: IF true THEN a=3 ; b =4 IF true THEN a=3 else b=4 ; c=5多行if语句的语法格式为:IF condition1 THENaction1ElseIF condition2 THENaction2。Elseaction3End IF,例2.
22、22 多行IF语句示例: IF true THEN a=3 Else b=4c=5 End IF,2.6.2条件语句,CHOOSE CASE语句 CHOOSE CASE语句是一种多分支选择语句,能够根据表达式值的不同而执行不同的语句,其语法格式为: CHOOSE CASE testexpressionCASE expressionliststatementblock CASE expressionliststatementblock。CASE ELSEstatementblock End CHOOSE,例2.23 CHOOSE CASE语句示例: CHOOSE CASE WeightCASE
23、1,2,3,4,5Postage=Weight*0.70CASE IS 16Postage=Weight*0.30CASE 16 to 48Postage=4.50CASE ELSEPostage=25.00 END CHOOSE,2.6.3循环语句,FORNEXT循环 FORNEXT是一种计数循环,它能够使循环体中的语句执行规定的次数,因此这种循环适用于循环次数已经确定的情况,其语法结构为: FOR varname = start TO end STEP incrementstatementblock NEXT例2.24 FORNEXT循环示例: FOR count = 1 TO 10 ST
24、EP 1 messagebox(“提示“,“这是第“ + String(count) + “次循环“) NEXT,2.6.3循环语句,DOLOOP循环 DOLOOP是一种条件循环,因此这种循环更加适合于循环次数事先无法确定的情况。,第一种其语法格式为: DO UNTIL conditionstatementblock LOOP,第二种其语法格式为: DO WHILE conditionstatementblockLOOP,第三种其语法格式为: DOstatementblock LOOP UNTIL condition,第四种其语法格式为: DOstatementblock LOOP WHILE
25、 condition,2.6.3循环语句,例2.25 将用FORNEXT循环语句改写成以4DOLOOP循环方式。 FOR count = 1 TO 10 STEP 1 messagebox(“提示“,“这是第“ + String(count) + “次循环“) NEXT,第一种其语法格式为: DO UNTIL conditionstatementblock LOOP,int count = 1 do until count 10messagebox(“提示“,“这是第“ + String(count) + “次循环“)count + loop,第二种其语法格式为: DO WHILE condi
26、tionstatementblockLOOP,int count = 1 do while count = 10messagebox(“提示“,“这是第“ + String(count) + “次循环“)count + loop,第三种其语法格式为: DOstatementblock LOOP UNTIL condition,int count = 1 do messagebox(“提示“,“这是第“ + String(count) + “次循环“)count + loop until count 10,第四种其语法格式为: DOstatementblock LOOP WHILE condit
27、ion,int count = 1 do messagebox(“提示“,“这是第“ + String(count) + “次循环“)count + loop while count = 10,2.6.3循环语句,Continue和Exit语句 Continue和Exit语句一般用于FORNEXT和DOLOOP循环中,可以更加灵活的控制循环的执行。 当循环体在执行过程中,遇到CONTINUE语句时,将跳过本次循环而直接开始新一轮循环; 遇到Exit语句时,将立即退出当前循环,程序将转到循环后的语句继续执行。例2.27 Continue和Exit语句示例:for count = 1 to 10i
28、f count = 3 then continuemessagebox(“提示“,“count现在的值为“ + String(count)if count = 4 then exit next,2.6.4其他语句,Return语句 Return语句用于立即终止事件处理程序或者函数的运行,同时返回到调用程序,其语法格式为: Return expression 可选项expression为一个表达式,它的值将作为返回值返回给事件处理程序或者函数。Halt语句 Halt语句用于终止整个应用程序的运行,其语法格式为: Halt Close 当Halt语句不带Close选项时,该语句将立即终止应用程序的
29、运行;带Close选项时,一旦执行该语句,应用程序先执行应用对象的Close事件处理程序,再终止应用程序的运行。,2.6.5粘贴控制语句,在脚本代码的编写过程中,经常需要使用到以上的控制语句如条件语句、循环语句等。以上控制语句除了从脚本视图直接输入之外,也可以通过粘贴的方法来提高代码的输入速度。粘贴控制语句的步骤如下所述:,2.7 PowerScript常用系统函数,系统函数不属于任何对象或控件,在程序的任何地方都可以直接使用。PowerBuilder提供了几百种系统函数,熟练的掌握它们不仅有助于加快应用程序开发的进度,而且提高了程序的运行效率。以下主要介绍在实际开发过程中的一些常用的系统函数
30、,其他更多的系统函数请使用联机帮助查看。,2.7.1 MessageBox()函数,MessageBox()函数将在屏幕上显示一个提示框,用于向用户显示一些提示、警告、出错、询问等信息。MessageBox()函数的格式如下: MessageBox ( title, text , icon , button , default ) 例2.29 MessageBox()函数示例: int li_return li_return = Messagebox(“提示“,“请选择按钮“,Question!,YesNo!) if li_return = 1 thenMessagebox(“提示“,“你选择
31、了Yes“,Exclamation!) elseMessagebox(“提示“,“你选择了No“,Exclamation!) end if,2.7.2 字符串相关函数,Asc()函数 Asc()函数用于获取字符串中第一个字符的ASCII码值。其语法格式为: Asc ( string ) 如Asc(“ABCD”)Char()函数 Char()函数用于获取字符串的第一个字符,或者将Blob变量的第一个值或一个数值转换为字符。其语法格式为: Char ( n ) 如char(65)Fill()函数 Fill()函数用于获取一个由指定长度的指定字符构成的字符串。其语法格式为: Fill ( chars
32、, n ) 如Fill(“ABCD” , 3) , Fill(“*” , 3),2.7.2 字符串相关函数,Left()函数 Left()函数用于获取指定字符串中左部的指定长度的子串。其语法格式为: Left ( string, n ) 如Left(“ABCD” , 2)Mid()函数 Mid()函数用于获取指定字符串中指定位置开始的指定长度的子串。其语法格式为: Mid ( string, start , length ) 如Mid(“ABCD” , 2 , 2)Right()函数 Right ()函数用于获取指定字符串中右部的指定长度的子串。其语法格式为: Right ( string,
33、n ) 如Right(“ABCD” , 2),2.7.2 字符串相关函数,LeftTrim()函数 LeftTrim()函数用于删除字符串中左部的空格。其语法格式为: LeftTrim ( string ) 如LeftTrim(“ ABCD”)RigthTrim()函数 RigthTrim ()函数用于删除字符串中右部的空格。其语法格式为: RigthTrim ( string ) 如RightTrim(“ABCD ”)Trim()函数Trim ()函数用于删除字符串中两边的空格。其语法格式为:Trim ( string ) 如Trim(“ ABCD ”),2.7.2 字符串相关函数,Lowe
34、r()函数 Lower()函数用于将字符串中所有的大写字母转换为小写字母。其语法格式为: Lower ( string ) 如Lower(“ABCD”)Upper()函数 Upper ()函数用于将字符串中所有的小写字母转换为大写字母。其语法格式为: Upper ( string ) 如Upper(“abcd”)Len()函数 Len()函数用于求指定字符串或者Blob变量的长度。其语法格式为: Len ( string or blob ) 如Len(“ABCD”),2.7.2 字符串相关函数,Pos()函数 Pos()函数用于在一个字符串中从指定位置开始查找其子串的位置。其语法格式为: Po
35、s ( string1, string2 , start ) 如Pos(“ABCD” , “C”)Replace()函数 Replace()函数用于将一个字符串中指定长度的子串替换为另一个字符串。其语法格式为: Replace ( string1, start, n, string2 ) 如Replace(“ABCD” , 2 , 3 , “ELL”),2.7.2 字符串相关函数,例2.28 字符串函数示例: ? = Asc(“A“) ? = Char(65) ? = Fill(“-+“, 2) ? = Left(“BABE RUTH“, 4) ? = Mid(“BABE RUTH“, 5,
36、5) ? = Right(“BABE RUTH“, 4) ? = LeftTrim(“ RUTH“) ? = RightTrim(“RUTH “) ? = Trim(“ BABE RUTH “) ? = Lower(“Babe Ruth“) ? = Upper(“Babe Ruth“) ? = Len(“) ? = Pos(“BABE RUTH“, “RU“) ? = Replace(“Davis“, 4, 2, “e“),2.7.3 数值相关函数,Abs()函数 Abs()函数用于计算一个数的绝对值。其语法格式为: Abs ( n ) Int()函数 Int()函数用于求不大于(即小于或等于
37、)某个指定值的最大整数。其语法格式为: Int ( n )Ceiling()函数 Ceiling ()函数用于求不小于(即大于或等于)某个指定值的最大整数。其语法格式为: Ceiling ( n ) Max()函数 Max()函数用于求两个数中的最大值。其语法格式为: Max ( x, y ),2.7.3 数值相关函数,Min()函数 Min ()函数用于求两个数中的最小值。其语法格式为: Min ( x, y ) Mod()函数 Mod()函数用于求两个数的余数。其语法格式为: Mod ( x, y ) Round()函数 Round()函数用于将给定的小数四舍五入到指定的小数位数。其语法格
38、式为: Round ( x, n ) Rand()函数 Rand()函数主要用于随机得到一个位于1和最大值之间的整数。其语法格式为: Rand ( n ),2.7.3 数值相关函数,例2.29 数值函数示例: ? = Abs(-4) ? = Int(3.8) ? = Int( - 3.8) ? = Ceiling(-4.2) ? = Max(4,7) ? = Min(- 4, - 7) ? = Mod(20, 6) ? = Round(9.625, 2) ? = Rand(10),2.7.4 日期相关函数,Today()函数 Today()函数用于获取当前的系统日期。其语法格式为: Today
39、 ( )Year()函数 Year()函数用于获取日期中的年份。其语法格式为: Year ( date )Month()函数 Month ()函数用于获取日期中的月份。其语法格式为: Month ( date )Day()函数 Day ()函数用于获取日期中的日期。其语法格式为: Day ( date ),2.7.4 日期相关函数,Now()函数 Now()函数用于获取当前的系统时间。其语法格式为: Now ( )Hour()函数 Hour ()函数用于获取时间(24小时制)中的小时。其语法格式为: Hour ( time )Minute()函数 Minute ()函数用于获取时间(24小时制
40、)中的分钟。其语法格式为: Minute ( time )Second()函数 Second ()函数用于获取时间(24小时制)中的秒数。其语法格式为: Second ( time ),2.7.4 日期相关函数,例2.30 日期函数示例: ? = today() ? = Year(today() ? = Month(today() ? = Day(today() ? = now() ? = Hour(now() ? = Minute(now() ? = Second(now(),2.7.5 数组相关函数,LowerBound()函数 LowerBound()函数用于获取数组中指定维的下界。其语
41、法格式为: LowerBound ( array , n ) 其中,array为指定的数组名,n为可选项,用于指定数组的某一维。UpperBound()函数 UpperBound ()函数用于获取数组中指定维的上界。其语法格式为: UpperBound ( array , n ) 其中,array为指定的数组名,n为可选项,用于指定数组的某一维。,2.7.5 数组相关函数,例2.31 数组函数示例: 假设声明以下数组integer a5, b2,5,请问 ? = LowerBound(a) ? = UpperBound(a) ? = LowerBound(b) ? = UpperBound(b
42、) ? = LowerBound(b,2) ? = UpperBound(b,2),2.7.6 定时相关函数,Idle()函数 Idle()函数用于设置定时器时间间隔,如果用户在指定的时间间隔内没有任何动作就触发应用对象的idle事件。其语法格式如下: Idle ( n )Timer()函数 Timer()函数用于设置定时器时间间隔,并且在这一时间间隔内反复触发指定窗口的Timer事件,其语法格式如下: Timer ( interval , windowname )例2.32 定时函数示例: Idle(100) timer(2 , this),2.7.7 调用相关函数,Run()函数 Run(
43、)函数用于运行一个指定的应用程序。Run()函数的语法格式为: Run ( string , windowstate )ShowHelp()函数 ShowHelp()函数用于显示指定的帮助文件。其语法格式如下: ShowHelp ( helpfile, helpcommand , typeid )例2.33 调用函数示例:Run(“notepad“, Maximized! )ShowHelp(“C:PBINQ.HLP“, Index!),2.7.8粘贴系统函数,在脚本代码的编写过程中,经常需要使用到以上的各种系统函数。除了从脚本视图直接输入之外,也可以通过粘贴系统函数的方法来提高代码的输入速度。粘贴系统函数的步骤如下所述:,2.8 PowerScript自定义函数,PowerBuilder中除了系统提供的函数之外,用户也可以根据程序需要定义自己的函数。用户自定义函数主要分为自定义全局函数和自定义对象函数。自定义全局函数与任何对象均无关联,在应用程序的任何位置均可以进行调用;自定义对象函数则是定义在窗口、菜单等对象之中,是这些对象的一部分,而且通常只能在所在对象的脚本之中进行调用,但是必要时也可以在其它对象中通过“对象名.函数名()”进行调用。,2.8.1 自定义全局函数,图2-21 New对话框,图2-22 函数画板,访问范围,返回类型,函数名称,参数信息,功能实现,