21PowerScript基础.ppt

上传人:本田雅阁 文档编号:2146088 上传时间:2019-02-21 格式:PPT 页数:47 大小:729.51KB
返回 下载 相关 举报
21PowerScript基础.ppt_第1页
第1页 / 共47页
21PowerScript基础.ppt_第2页
第2页 / 共47页
21PowerScript基础.ppt_第3页
第3页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《21PowerScript基础.ppt》由会员分享,可在线阅读,更多相关《21PowerScript基础.ppt(47页珍藏版)》请在三一文库上搜索。

1、第2章 PowerScript 语言,2.1PowerScript基础 2.2 数据类型 2.3 变量声明及作用域 2.4 运算符及表达式 2.5 PowerScript语句 2.6 几个常用的标准函数 2.7 编辑代码 2.8 应用程序编程实例,2.1.1注释,(1) 单行注释用/ 从双斜杠开始到行尾均为注释。 (2) 多行注释用/* */ 从/*开始到*/结束均为注释。 例如: / 这是一个计算器程序 decimal add1 / add1表示中间结果 /* flag=1表示按下的数字是前面数字的一部分 flag=0表示按下的数字是一个新的数字的开始 */ PowerScript 在 工

2、具 栏 提 供了将 所 选 文 字 加 上/去 除 注释 的两个图 标,2.1.2 标识符,标识符是程序中用来代表变量、标号、函数、窗口、菜单、控件、对象等名称的符号。 标识符的命名规则: l 必须字母或下划线开头; l 由字母、数字、下划线、短横线- 、 ¥ 、 # 、%组成; l 不能是PowerScript保留字(见附录); l 不区分大小写。(但若用于Web、Unix等必须区分大小写); l 最长40个字符。 注意: 短横线与减号是同一个字符,而短横线可以用在标识符中,因此,表达式中使用减法运算符时,必须在减号的两边加上空格,否则可能产生语法甚至语义错误。,2.1.3 续行符,语句超长

3、,为阅读方便可以将语句分成几行,续行符& 例如: IF side1 = 5 AND & side2 = 6 THEN area = 5*7 相当于 IF side1 = 5 AND side2 = 6 THEN area = 5*7 注意:不能在标识符或保留字的中间续行。,2.1.4 特殊字符,常用的特殊字符 :如表 表2-1常用特殊字符,2.1.5 空值,空值既不是零,也不是非零的任何数值。 变量被赋予空值的途径有两条: (1) 从数据库中读到空值; (2) 使用SetNull()函数赋值. 例如: String person / person=“ SetNull(person) / per

4、son值为NULL 测试变量或表达式是否为空值时,使用函数IsNull(),而不是直接使用关系表达式, 例如:假设a是个变量,要测试它是否为空值,可以这样写: IF IsNull(a) THEN ,2.1.6 代词,PowerScript 提供了四个代词,分别为:This、Parent、ParentWindow和Super。常用的是前面三个。使用代词主要是为了增加代码的通用性,不受所指代的控件或对象的名称发生变化的影响。 l This:This代表窗口、用户对象、菜单、应用对象或控件本身。如果不用This,则需要用按钮控件名cb_1、cb_2、cb_i等,将来修改维护很麻烦,同时难以使用复制、

5、粘贴。 l Parent:Parent指当前控件所在的窗口。 l ParentWindow:ParentWindow代表运行时菜单所在的窗口,该代词只能在菜单的事件处理程序中使用。 l Super:在编写控件或者对象的子对象的程序的时候,可以调用祖先的程序,用户可以直接使用祖先对象的名称调用它们,也可以使用Super来引用直接双亲。例如要调用父类的Clicked脚本可以这样写:CALL Super:Clicked,2.2.1 标准数据类型,标准数据类型包括数值型、字符型、日期型、布尔型等一些最基本的数据类型。 标准数据类型名称、含义 : blob:二进制大对象,用于处理图像、大文本等 ; bo

6、olean :布尔型,只有两个可能的值:true或false ; character或char :单个ASCII字符 ; String :字符串类型,用于存储任意的ASCII字符; date :日期,包括年(1000-3000)、月(01-12)、日(01-31); time :时间,包括小时(0023)、分(0059)、秒(0059)以及秒的小数位(最多六位),范围从00:00:00到23:59:59:999999; datetime :日期及时间; decimal或dec:带符号十进制数,最大18位精度; Double:带符号浮点数,15位有效数字,范围从2.2E-308到1.7E+308

7、 ;,2.2.1 标准数据类型,integer或int :16位带符号整数,范围从-32768到+32767 ; long :32位带符号整数,范围从-2,147,483,648到+2,147,483,64; Real:带符号浮点数,精度6位,范围从1.17E-38到3.4E+383.5E+5; UnsignedInteger或UnsignedInt或Uint:16位无符号整数,范围从0 到65535; UnsignedLong或Ulong:32位无符号整数,范围从0到4,294,976,295 ;,2.2.2 枚举类型,枚举类型是PowerBuilder定义的特殊常量,常用于对象或控件的属性

8、、系统函数的参数等。但在PowerScript中我们不能定义自己的枚举类型,而只能按系统要求使用它。枚举类型实际上是一组值,每个值都以英文单词开始,以感叹号(!)结束,例如:yesno! ,OkCancel!。,2.2.3 系统对象数据类型,窗口、菜单、各种控件都是系统对象,每一种系统对象实际上都是定义在内部的一种数据类型。通常不必把这些对象当作数据类型来考虑,只需通过工具栏或菜单定义它们即可,因为它们都是可视化的对象。但有时候需要动态地处理窗口、菜单、控件等系统对象,就需要定义系统对象数据类型。,2.3.1 变量声明,所有变量在使用之前,都要首先予以说明。系统预定义的五个全局变量除外(SQL

9、CA、SQLDA、SQLSA、Error、Message)。 格式:数据类型 变量名=初值 变量被声明后,若未指定初值,则系统将赋以默认值。对数值型变量而言,其默认值为零。对字符型变量而言,其默认值为空字符或空串“”。 在定义变量的同时,我们可以同时指定变量的初值。 例如: Integer score=100 /定义整型变量score,并赋予初值100 String city=“南京“, Country /定义变量city并赋初值“南京”, /定义变量Country,其初值为空串(“”),2.3.2 变量作用域,有四种不同范围的变量:Local、Instance、Global、Shared。

10、在事件和函数中定义的变量都是Local变量,它的作用范围仅在所在的事件和函数内起作用,在别的事件和函数中不起作用。 Instance是一种特殊的变量,它的作用范围在所在对象的全部事件及函数,包括该对象上的所有控件的事件及函数。是一种局部的“全局变量”。可以分别给Application、窗口等定义Instance变量。图2-1表示的是在Window下定义Instance变量的步骤,给Application等其它对象定义Instance变量的步骤与此类似。在Window下定义的Instance变量,作用范围是所在的窗口及窗口内的各种控件的所有事件、函数等,查看并粘贴Instance变量如图2-2所

11、示。 定义Global变量与定义Instance变量的方法相似。不过Global变量的作用域是整个应用程序。一般说,使用Global变量不是一个好的习惯,它会降低程序的可靠性。,2.4.1 算术运算符,算术运算符有五个,用于加、减、乘、除、乘方。其中加号、减号还用于表示正数、负数。 在表达式中,乘方高于乘除,乘除高于加减。同级运算遵循自左至右的原则。,2.4.2 关系运算符,关系运算符用来对相同类型的量进行大小比较运算,常用于条件语句和循环语句。 表2-4关系运算符 关系运算符的结果是true或false。关系运算符可以应用于字符串的比较。,2.4.3 逻辑运算符,逻辑运算符用来对布尔型的量进

12、行运算, 表2-5逻辑运算符 结果是true或false。有三个逻辑运算 符,其表示和功能见表2-5。 表2-6为逻辑运算的“真值表”。 用它表示当a和b的值为不同组 合时,各种逻辑运算所得到的 值。,2.4.4 连接运算符,连接运算符只有一个,就是符号“+”,用于把两个String型或Blob型变量的内容连接在一起,形成新的字符串或Blob型数据 例如: s1=“computer “+“book“ 则s1=“computer book“ s2=“book“+“computer“ 则s2=“bookcomputer“,2.4.5 运算符的优先级,在表达式中,运算符按照优先级进行运算,共分九级,

13、括号最高,同级运算自左至右。 1 () 括号 2 +,- ,+,- 正号、负号、自增、自减 3 幂运算 4 *,/ 乘、除 5 +,- 加、减及连接运算 6 =,=, 关系运算符 7 NOT 逻辑反 8 AND 逻辑与 9 OR 逻辑或,2.5.1赋值语句,赋值语句用于给变量、对象属性赋值。 格式:variable_name= expression 其中variable_name表示变量名,expression代表表达式,它的作用是把表达式的值赋给等号左边的变量,例如:area=3.14*r*r。,2.5.2条件语句,条件语句分单行和多行两种格式。 格式1: IF condition THEN

14、. ELSE. 格式2: IF condition THEN . ELSE . ENDIF 在条件语句中,ELSE子句是可选的 。 条件语句的执行过程是先计算condition (条件表达式)的值,如果为 true,则执行then后面的语句,否则执行else后面的语句(如果有 else的话)。,2.5.3 FOR循环语句,FOR.NEXT语句按照预先规定的次数重复执行一段代码。 格式:FOR v=s TO e STEP i NEXT FOR .NEXT语句的执行过程见 图。图中“超过”的含义是: 当步长大于零时,表示“大于” ; 当步长小于零时,表示“小于” 。 若不指定步长,则为STEP 1

15、。 步长是零时为死循环。,2.5.4 DOLOOP循环,DO.LOOP循环是重复执行一段代码,直到条件表达式为true或false。它有四种格式: 格式1: DO UNTIL condition LOOP 当条件为false时,执行 循环体;为true时退出 循环。,2.5.4 DOLOOP循环,格式2: DO WHILE condition LOOP 当条件为true时,执行 循环体;为false时退出 循环。,2.5.4 DOLOOP循环,格式3: DO LOOP UNTIL condition 先执行循环体,然后判断条件。 当条件为false时,执行循环体; 为true时退出循环。和格式

16、一 的区别是这里的循环体至少执 行一次。,2.5.4 DOLOOP循环,格式4: DO LOOP WHILE condition 先执行循环体,然后判断条件。 当条件为true时,执行循环体; 为false时退出循环。和格式 二的区别是这里的循环体至少 执行一次。例题,2.5.5 CHOOSE语句 CHOOSE.CASE语句能够根据所测试的表达式的值的不同来执行不同 的语句 ,而不象条件语句那样只有两种选择。,格式: CHOOSE CASE test_expression CASE expression_list1 statements1 CASE expression_list2 state

17、ments2 . . . CASE expression_listn statementsn CASE ELSE statements n+1 END CHOOSE,其中expression_list形式为: l 单个值 l 由逗号隔开的若干个值 l 某一区间:例如: 1 to 8, b to h is表达式:例如: is30 /is是保 留字,代表 test_expression的值 l 混合:例如: 2,4,7 to 15,is20,2.5.5 CHOOSE语句,执行CHOOSE CASE语句时,逐条查找CASE,如果找到与测试值相匹配的判断表达式,就执行该CASE后的语句块,再执行END

18、 CHOOSE后的第一条语句。如果CHOOSE CASE语句中包含CASE ELSE子句,则未找到任何匹配的CASE条件时,执行它中的语句块。,2.5.6 CONTINUE语句,格式: CONTINUE 只能用于DO.LOOP和FOR.NEXT语句中,遇到CONTINUE语句, 将不执行CONTINUE语句后面的语句,回到循环条件处继续执行。,2.5.7 EXIT语句,格式: EXIT 只能用于DO.LOOP和FOR.NEXT语句中,遇到EXIT语句,将结束循环,跳到LOOP或NEXT后面的语句去执行。,2.5.8 RETURN语句,格式: RETURN 表达式 从当前事件或函数中返回。,2.

19、5.9 HALT语句,格式: HALT CLOSE HALT结束当前的PowerBuilder应用程序。 HALT CLOSE先触发当前PowerBuilder应用程序的application对象的close事件,然后再结束当前的应用程序。,2.5.10 GOTO语句,格式: GOTO 语句标号 转到语句标号处继续执行。程序中应避免使用goto语句。 例如: i=1 BeginLoop: /语句标号 sum+=arri /等价于语句sum=sum+arri, i+=1 IF i=50 THEN GOTO BeginLoop /转到BeginLoop标识的位 置继续执行 . ,2.6.1 Mes

20、sageBox函数,MessageBox函数常常用于显示出错、警告、提示等, 在程序开发阶段被程序员用来显示程序运行状态及中间结果。它将在屏幕上显示一个窗口,用户在响应该窗口后,程序才能继续运行下去。 格式: MessageBox( title, text ,icon ,button ,default ) 其中title和text参数是必须的,其它花括号中的参数是可选的。各参数的含义: title:string类型,指定消息对话框的标题。 text:指定对话框中显示的消息,可以是数值数据类型、字符串或boolean值。 icon:枚举类型,可选项,指定要在该对话框左侧显示的图标。值为: Inf

21、ormation!(默认值),StopSign!,Exclamation!,Question!,None!。 button:枚举类型,可选项,指定显示在该对话框底部的按钮.值为: OK! (默认值),OKCancel!,YesNo!,YesNoCancel!,RetryCancel!,AbortRetryIgnore!。 default:数值型,可选项,指定作为缺省按钮的按钮编号,按钮编号自左向右依次计数,缺省值为1,如果该参数指定的编号超过了显示的按钮个数,MessageBox()函数将使用缺省值返回。缺省按钮是指获得焦点的按钮。函数执行成功时返回用户选择的按钮编号(例如1、2、3等),发生

22、错误时返回-1。如果任何参数的值为NULL,MessageBox()函数返回NULL。,2.6.2 Open函数,Open函数用来打开一个窗口。 格式: Open(window_name) 打开窗口并触发窗口的open事件。,2.6.3 Close函数,Close函数用来关闭一个窗口。 格式: Close(window_name) 先触发窗口的CloseQuery事件,若CloseQuery事件的返回值不等于1,则再触发close事件、关闭窗口并释放窗口以及窗口上的控件所占据的内存。若CloseQuery事件的返回值等于1,则不会关闭窗口。,2.6.4 Run函数,Run函数被用于在Power

23、Builder中运行其它的Windows应用程序。 格式:Run(appl) 或 Run(appl, state) 其中,参数appl是个字符串,指明要运行的应用程序名,若不含路径名,则默认为当前路径。参数state是个枚举类型,用以指明开始运行时的窗口状态,有三个值可选:Maximized!:最大化窗口;Minimized!:最小化窗口;Normal!:正常大小窗口(原始窗口),此为默认值。,2.7 编辑代码,编辑代码首先选定要编辑代码的对象,然后选定事件,再在Script窗口中编辑代码。见图2-10。 或者用右键点击要编辑代码的窗口或控件,将出现一个弹出 式菜单,选择Script, 系统将

24、打开Script窗口,并在窗 口显示最后一次编辑的事件的 代码。若事件都没有代码,则 选择最常用的事件,供用户输 入代码。用户可以选择所要的 事件。,2.8 应用程序编程实例,计算器的外观如图。首先在硬盘上创建一个目录Calculator 用于存放计算器应用。创建计算器的具体步骤为: 1创建计算器应用 (1)创建新的工作空间。单击New“Workspace”页,单击“OK”,保存文件到建的目录Calculator,输入文件名为“Calculator.pbw”。 (2)创建新的应用。单击New图标按 钮,打开New对话框;选择“Target”页中的应用“Application”,单击“OK”,弹

25、出保存文件对话框,选择到新建的目录Calculator,输入文件名为“Calculator”,单击“Finish”,系统自动用上面输入的应用名称加上扩展名“.pbl”和“.pbt”组成库名Calculator.pbl以及目标文件名Calculator.pbt。,2.8 应用程序编程实例,2创建计算器窗口和设置窗口属性 具体方法为: (1)单击New “PB Object”页双击 “Window”图标,创建一个新窗口对象并进入窗口画板。 (2)在窗口的属性(Properties)卡的General页中,在Title栏中输入窗 口标题“计算器”,将MaxBox和Resizable复选框不选中,其余

26、使用缺省值;保存窗口对象,取名为w_calculator。 3声明几个变量 在“Script”脚本区左上边的下拉列表框中选择“(Declare)”,然后在下面的脚本区中编写代码如下: decimal add1 char s1 int flag 其中,add1保存中间结果;s1保存按下的运算符;flag 是一个标志位,flag=1表示按下的数字是前面数字的一部分,flag=0表示按下的数字是一个新的数字的开始。,2.8 应用程序编程实例,4在窗口中布置显示数值的单行编辑框控件 单击菜单“Insert | Control | SingleLineEdit”,在窗口上点击,出现一个单行编辑框,删除“

27、Text”栏中的“none”,选中“DisplayOnly”属性,在单行编辑框的边沿拖动,调整其尺寸。 5在窗口中布置十个数字按钮和小数点按钮 制作数字“1”按钮,单击菜单“Insert | Control | CommandButton”,在窗口上点击,在“Text”栏中输入“1”,点击“Other”页下部的“Pointer”下拉列表框,选择 “HyperLink!” 图标,单击数字“1”按钮,按右键,单击“Script”,光标自动跳到脚本编辑区,可以看到缺省的按钮事件为“licked” 输入如下代码: if flag=0 then sle_1.text=“ flag=1 end if sl

28、e_1.text=sle_1.text+this.text 用外观复制的办法制作10个数字按钮以及小数点按钮,外观复制的办法是单击一个数字按钮,同时按Ctrl+T键。将新按钮Text栏中的内容改为要制作的按钮符号。,2.8 应用程序编程实例,6运算符按钮的制作 用外观复制的办法制作“+”按钮,编辑新按钮的“Clicked”事件脚本如下: choose case s1 case * sle_1.text=string(dec(sle_1.text)*add1) case / sle_1.text=string(add1/dec(sle_1.text) case + sle_1.text=stri

29、ng(dec(sle_1.text)+add1) case - sle_1.text=string(add1 - dec(sle_1.text) end choose add1=dec(sle_1.text) s1=this.text flag=0 四个运算符按钮的“Clicked”事件的脚本操作过程与数字按钮类似。 7“清除”按钮的制作 用外观复制的方法复制出一个按钮,将其Text栏中的内容改为“清除”,在其“Clicked”事件中输入以下脚本: sle_1.text=“ add1=0 s1= flag=0 保存已作的工作。,2.8 应用程序编程实例,8“=”按钮的制作 用外观复制的方法复制

30、出一个按钮,将Text栏中的内容改为“=”, 将按钮的“Default”属性选中,这样按下回车键时,自动执行“=”按钮的“Clicked”事件的代码。 “=”键完整的脚本为: choose case s1 case * sle_1.text=string(dec(sle_1.text)*add1) case / sle_1.text=string(add1/dec(sle_1.text) case + sle_1.text=string(dec(sle_1.text)+add1) case - sle_1.text=string(add1 - dec(sle_1.text) end choos

31、e flag=0 s1= 保存添加了控件的窗口对象,关闭窗口。 9编写“应用”的脚本 在树型窗口中,双击“应用”Calculator,弹出应用画板。在事件下拉列表框中对应的是“Open”事件。 在下面空白的脚本编辑区中编写“Open”事件的脚本: Open(w_calculator) 保存并关闭应用画板。单击“Run”图标按钮,就可以运行计算器程序了。,例题 例如:分别用For-Next和Do-Loop求s=1+3+5+7+.99。 注意其中的差别,特别是循环条件。,(1) 用For-Next循环的程序段 integer s,i s=0 FOR i=1 TO 99 STEP 2 s=s+i N

32、EXT st_1.text=”s=”+string(s) /将运算结果显示在静态文本 框st_1中,因为s是整数, /所以要用string()函数将 它转换为字符型。,(2)用Do Until-Loop循环的程 序段 integer s,i s=0 i=1 DO UNTIL i99 s=s+i i=i+2 LOOP st_1.text=”s=”+string(s),例题,(3) 用Do While-Loop循环的程 序段 integer s,i s=0 i=1 DO WHILE i=99 /注意这里是小于等于99 s=s+i i=i+2 LOOP st_1.text=”s=”+string(s) (4) 用Do-Loop Until循环的程序段 Integer s,i s=0 i=1,DO s=s+i i=i+2 LOOP UNTIL i99 st_1.text=”s=”+string(s) (5) 用Do -Loop While循环的程序段 integer s,i s=0 i=1 DO s=s+i i=i+2 LOOP WHILE i=99 /注意 这里是小于等于99 st_1.text=”s=”+string(s),图2-1定义Instance变量,图2-1 定义 Instance 变量,图2-2查看并粘贴Instance变量,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1