77
数数数数数数第 8 第 PowerScript 第第 PowerScript 第第 Powerbuilder 第第第第第第第第第第 第第第第第第第第第第第第第第第第 第第第第 第第第 第 。, powerbuilder 第第第第第第第第第第 第第第第第第 第第第 powerscript 第第Powerscript 第第第第第第 C 第第 第第第第 PB 第第第第第第第第第第第第第第 第第第第 powerscript 第第第第第第第 第第第第第第第第第第第第第第Powerbuilder 第第第第 SQL 第第第第第第第第 第第第第第第第第 SQL 第第 第第第第第第第第第第第第第第第第第 第第第第

第 8 章 PowerScript 语言

  • Upload
    pavel

  • View
    121

  • Download
    0

Embed Size (px)

DESCRIPTION

第 8 章 PowerScript 语言. PowerScript 语言 Powerbuilder 是事件驱动的应用程序,事件发生时要处理的事情需要靠写程序来完成。那么,在 powerbuilder 中的编程语言是什么呢?就是我们将要学习的 powerscript 语言。 Powerscript 语言的语法与 C 语言十分类似。 - PowerPoint PPT Presentation

Citation preview

Page 1: 第 8 章  PowerScript  语言

数据库管理系统

第 8 章 PowerScript 语言 PowerScript 语言 Powerbuilder 是事件驱动的应用程序,事件发生时

要处理的事情需要靠写程序来完成。那么,在powerbuilder 中的编程语言是什么呢?就是我们将要学习的 powerscript 语言。 Powerscript 语言的语法与 C 语言十分类似。

PB 是用来对数据库进行操作的工具,这就要求powerscript 语言与其它语言相比应有较强的数据库操作能力。 Powerbuilder 语言支持 SQL 语言,而且还提供了一套完整的嵌入式的 SQL 语句,这就大大的增强了程序操纵和访问数据库的能力。

Page 2: 第 8 章  PowerScript  语言

数据库管理系统

8 . 1 Powerscript基础 一、标识符 标识符是程序中用来代表变量、标号、函数、菜单、控件、

对象等名称的符号。 标识符的命名规则:1. 必须以字符或下划线开头2. 由字母、数字、下划线、短横线、 # 、 ¥ 、 % 、组成3. 不是 powerscript 保留字,指在 powerbuilder 中有

特殊意义的字符,例如 this,parent,super 等,见书上附录。

4. 不区分大小写5. 最长 40 个字符

Page 3: 第 8 章  PowerScript  语言

数据库管理系统

正确的标识符:rvf_addbutton#1_specialid错误的标识符:total bookthisparentabc>cde2x特别注意:短横线与减号是同一个字符,在表达式中使用减法运算符时,必须在减

号的两边加上两个空格。i=i-1 错误i=i - 1

Page 4: 第 8 章  PowerScript  语言

数据库管理系统

二、标签 标签允许用户在一个程序内跳到某个点执行,它用于 GOTO 语

句。标签就是一个标识符后跟一个冒号(:),用户可以在一个脚本内放入任意数目的标签,但每个标签都必须是唯一的,用户可以跳到当前局部作用域内的某个标签。

例如下面的语句,来求 1 到 10 的和。Int i,ss=0i=1Lab1:s=s+ii=i+1If i<10 thenGoto lab1End if

Page 5: 第 8 章  PowerScript  语言

数据库管理系统

三、运算符 运算符代表了对一个或两个操作数所进行的运算。在

powerscript 中有四类运算符:算术运算符、关系运算符、逻辑运算符以及连接运算符。

1) 算术运算符算术运算符用于进行数学计算+ - * / ^c=a+bc=a - bc=a*bc=a/bc=a^b

Page 6: 第 8 章  PowerScript  语言

数据库管理系统

2) 关系运算符 关系运算符在两个操作数之间进行比较,关系运算的结

果可以为 TRUE 、 FALSE 、 NULL = 等于 >= 大于等于 > 大于 <

小于 <= 小于等于 <> 不等于 if a>b then

c=belse c=a

end if

Page 7: 第 8 章  PowerScript  语言

数据库管理系统

3 )逻辑运算符 逻辑运算符用于形成布尔表达式,这些表达式的值是

TRUE 或 FALSE

NOT ! 非

AND && 与

OR || 或

Page 8: 第 8 章  PowerScript  语言

数据库管理系统

4 )连接运算符 连接运算符( + )用于连接两个变量的内容,着两个

变量必须是 string 或 bolb 数据类型。String s1,s2

s1=’first’

s2=’ second’

s1=s1+s2

进行运算之后 s1 的值为” first second”

Page 9: 第 8 章  PowerScript  语言

数据库管理系统

5 )表达式中运算符优先级^

* 、 /

+ 、 -

= 、 >= 、 > 、 < 、 <> 、 <=

NOT

AND

OR

Page 10: 第 8 章  PowerScript  语言

数据库管理系统

四、连续字符串 多数情况下,每条语句占据一行,但有时语句会超

长,需要将语句分成几行。连续符( & )可用于在多行间延伸语句和字符串。If a>b and b>c and& c<10 thenc=a+bEnd if

Page 11: 第 8 章  PowerScript  语言

数据库管理系统

五、空值( NULL ) 是 powerbuilder 与数据库交换数据时使用的一

种特殊值,代表数据未定义,不确定,与空字符串、空字符、数值 0 以及日期 00-00-00 的意义完全不同。

测试空值的方法isnull( ) 返回布尔值 TRUE 、 FALSE设置一个变量为空的方法setnull()

Page 12: 第 8 章  PowerScript  语言

数据库管理系统

六、代词 powerscript提供了 4 个代词,分别是: this、

parent、 parentwindow和 super。常用的代词是前面的 3 个。使用代词主要是为了增加程序的通用性,不受所指代的控件或对象的名称发生变化的影响。

This:代表窗口、用户对象、菜单、应用对象或控件本身,即代表正在为之编写脚本的对象。

Parent:指当前控件的窗口。 Parentwindow:代表运行时菜单所在的窗口,

该代词只能在菜单的事件处理程序中使用。 Super:只有在处理继承时才使用代词

super, super用于引用后代对象的祖先。

Page 13: 第 8 章  PowerScript  语言

数据库管理系统

使用代词是为了使我们的程序更容易维护。 例如下列窗口 w_1

W_1

在 cb_close的 clicked事件中:close(w_1) 与 close(parent) 作用相 同

Page 14: 第 8 章  PowerScript  语言

数据库管理系统

七、对象 powerbuilder 对象就是一个应用程序的组

件,(例如,我们常用的窗口、菜单、函数、结构、查询、应用程序等)这些对象都有许多属性、事件及函数。

属性:用于描述对象的特性例如显示方式,大小、位置、是否可见等。例如窗口的名字、窗口的坐标等。

Page 15: 第 8 章  PowerScript  语言

数据库管理系统

八、事件 当对某个对象执行某些操作时就会触发事件。

用户为事件所编写的脚本确定进行什么样的处理进行响应。 Powerbuilder常用的事件提供了一些缺省的代码,例如当用户打开一个窗口时, PB 处理所有窗口控件的创建和屏幕的绘制。例如用户在窗口上单击鼠标左键时,便会触发该窗口的 LBUTTONDOWN 事件。

Page 16: 第 8 章  PowerScript  语言

数据库管理系统

8 . 2 数据类型

与其它语言一样, powerbuilder也有数据类型,而且数据类型十分丰富,包括标准数据类型、枚举类型、系统对象数据类型三大类,在程序中通过数据类型限定变量的取值范围。

Page 17: 第 8 章  PowerScript  语言

数据库管理系统

一、标准数据类型 在 powerbuilder中可以使用的标准数据类型

在许多不同的编程语言和数据库服务器都是通用的。标准数据类型包括数值型、字符型、日期型、布尔型等一些最基本的数据类型。其名称、含义及示例见表:

Page 18: 第 8 章  PowerScript  语言

数据库管理系统

一、标准数据类型 数据类型转换函数 char () 将 bolb integer 或 string转换成

char dec() 将 string转换成 decimal double() 将 string 转换成 double integer() 将 string 转换成 integer long( ) 将 string转换成 long例如,书上计算器程序中将单行编辑框中的值转 string( )

将 bolb,date,datetime 、数值和 time转换成 string

换为数值型:dec(sle_1.text)

Page 19: 第 8 章  PowerScript  语言

数据库管理系统

二、枚举类型

枚举类型是 powerbuilder 定义的特殊常量,常用于对象或控件的属性、系统函数的参量等。但用户不能定义自己的枚举类型,而只能按系统的要求使用它。枚举类型实际上是一组值,每个值都以英文单词开始,以!结束。例如:yesno!,okcancel! 。

messagebox(" 提示 "," 是否存盘? ",QUESTION!,OKCANCEL!)

Page 20: 第 8 章  PowerScript  语言

数据库管理系统

三、系统对象的数据类型

在 powerbuilder 中,窗口、菜单、各种控件都是系统对象,每一种系统对象实际上是定义在powerbuilder 内部的一种数据类型。通常是可视化的生成这些对象。在需要动态的处理菜单、窗口、控件时需要定义这些变量。例如 menu,window

window activesheetactivesheet = w_frame.GetActiveSheet()得到框架窗口的活动表单窗口

Page 21: 第 8 章  PowerScript  语言

数据库管理系统

无论是常量符号还是变量在使用前都要进行声明。 一、声明常量

CONSTANT datatype constname=value 其中, datatype 为数据类型, constname 为常量名

, value 为常量值。 例如 :

CONSTANT string is_str=“北京” CONSTANT real lr_pi=3.1415926

8 . 3 变量声明

Page 22: 第 8 章  PowerScript  语言

数据库管理系统

8 . 3 变量声明 二、变量声明 在 powerbuilder 中,所有变量在使用之前,都

要首先予以说明。系统预定义的五个全局变量除外( SQLCA , SQLDA , SQLSA , ERROR , Message )。

格式:数据类型 变量名 {=初值 }integer i=0real a,b,cinteger person[30]integer name[3 to 10]

Page 23: 第 8 章  PowerScript  语言

数据库管理系统

二、变量的作用域 变量的作用域表示如何访问变量,在什么地方可以访问。

在 powerbuilder 中有 4 种不同范围的变量:全局,实例,共享,局部

1. 全局变量 可以在整个应用程序内访问并存储在应用

程序对象中,在设计应用程序时应尽量使公共变量的数目最小,因为在任何地方都有可能改变变量的值,会给程序的调试和维护带来困难。不利于对象的封装性。

Page 24: 第 8 章  PowerScript  语言

数据库管理系统

 二、变量的作用域2. 实例变量 实例变量是在一个对象中(应用程序、窗口、

用户对象或菜单)内定义,可以在该对象的任何地方访问。这些变量应在对象创建时初始化,随着对象取消,实例变量也消失。

例如,在 w_1 中定义实例变量: integer I 在 w_1 之外引用该变量时 : w_1.i=1

Page 25: 第 8 章  PowerScript  语言

数据库管理系统

二、变量的作用域3. 共享变量 共享变量在对象中定义与对象的类关联,当对象消失

后,共享变量的值依然保留直至应用程序关闭。4. 局部变量

局部变量就是在脚本层定义的变量,作用域在脚本内部。对一个变量的搜索次序:局部变量 共享变量全局变量实例变量

Page 26: 第 8 章  PowerScript  语言

数据库管理系统

作用域 全局变量( Global )

可在整个应用程序内被访问 存储在应用程序对象中

共享变量( Shared ) 在对象内定义 可在对象内部任何地方被使用 同一个类的所有实例共享这种变量

实例变量( Instance ) 在对象内定义 可在对象内部任何地方被使用 实例变量的值不能与同一类的另外实例所共享

局部变量( Local ) 在脚本内定义的变量 只在脚本内部有效

变量的优先级 由高到低依次为:局部变量→实例变量→全局变量→共享变量

二、变量的作用域

Page 27: 第 8 章  PowerScript  语言

数据库管理系统

三、数组

powerbuilder 提供两种,一维数组和多维数组。一维数组既可以固定大小,也可以是无界。多维数组必须有一维固定大小。

1. 一维数组string str[30]string str[3 to 30]固定大小,任何在此之外的索引引用都会产生一个错误。

Page 28: 第 8 章  PowerScript  语言

数据库管理系统

三、数组2. 无界数组 没有定义索引作用域的一维数组,无界数组索引从 1 开

始,在第一次创建时上索引为 0 ,下索引为 1 。Integer a[] 任何大于 1 的引用都是合法的。a[200]=100 生成 200个元素,第 200个元素为 100,其它为

0a[250]=50 再向数组追加 50个元素访问数组作用域之外的元素将引起错误。例如integer i[]i[100]=0If i[101]>0 then 访问数组作用域之外的元素会引起错误End if

Page 29: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句一、赋值语句 赋值语句可以把一个表达式的结果或者变量和常量的值,赋给一

个变量或者对象的属性或成员变量。赋值语句的格式是:变量名 = 表达式将表达式的值赋给等号左边的变量。例如:str = ‘abc’i = 6使用赋值语句也可以为数组变量赋值。例如:integer aarray[]aarray = {1,2,3,4,5,6}在变量和数组之间也可以使用赋值语句复制数据:array1 = array2

Page 30: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句二、条件语句IF … THEN 语句是一个选择分支结构。它有单

行和多行两种格式。1 、 单行 IF … THEN 语句单行 IF … THEN 语句的语法格式为:IF 条件 THEN 语句 1 [ELSE 语句 2]其中条件是一条表达式,如果条件成立结果为执行

语句 1 ,否则执行语句 2 将被执行。

Page 31: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句

例如:IF num<20 THEN NUM = 1 ELSE NUM = 2或if num<20 then

num=1else

num=2end if

条件

语句 1 语句 2

Page 32: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句2 、 多行 IF …THEN语句多行 IF … THEN语句的语法格式为:条件 1 语句 1 条件 2 语句

2TTFF语句 N…..…..IF 条件 1 THEN语句 1ELSEIF 条件 2 THEN语句 2…ELSE语句 nEND IF

条 件1

语句 1

条 件2

语句 2

T

T

F

F

语句 N

…..…..

Page 33: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句 其中条件 1 和条件 2 是条件表达式,语句 1 、语句 2 和语句 n 是一条或者多条语句。

本语句的执行过程为: 计算条件表达式条件 1, 如果它的结果为 TRUE ,则执行语句 1,然后略过在它后面和 END IF 之前的语句,离开 IF...THEN 语句;

如果条件 1 的值为 FALSE ,则计算条件表达式条件2, 如果结果为 TRUE ,则执行语句 2 ,然后略过在它后面和 END IF 之前的语句,

……, 如果条件表达式的结果都为 FALSE ,并存在 ELSE子句,则语句 n 被执行。

Page 34: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句例子:

int scorestring gradeif score>=85 then

grade=”A”else if score>=75 then

grade=”B”else if score>=60 then

grade=”C”else

grade=”D”end if

Page 35: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句三、 CHOOSE CASECHOOSE CASE 控制结构根据测试值决定程序执行方向,它是一

个条件多分支结构。 CHOOSE CASE 的语法格式为:CHOOSE CASE 测试值CASE 表达式 1语句 1CASE 表达式 2语句 2......CASE ELSE语句 nEND CHOOSE

Page 36: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句判断表达式可以用以下的几种形式:1 .用逗号分割的数据,例如: 1 , 2 , 3 , 4 , 5 , 6 ,2 .用 TO表示一个区间,例如: 1 TO 603 .用 IS代表测试值,并辅以关系操作符,例如: IS >204 .使用以上的三种方法的综合,用逗号分隔,例如:6 , 6 TO 16, IS > 36

在 CHOOSE CASE语句中至少包括一条 CASE,并且使用 END CHOOSE作为结尾。 POWER BUILDER将逐条地查找 CASE,如果找到与测试值匹配的判断表达式的时候,就执行该 CASE后面的语句,然后转向指向 END CHOOSE后的第一条语句。如果包含 CASE ELSE,在未发现任何匹配 CASE条件的时候,执行 CASE ELSE后面的语句。

Page 37: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句例子:CHOOSE CASE scoreCASE is>=85grade = “A”CASE 75 TO 84Grade=”B”

CASE 60 to 74Grade=”C”

Case elseGrade=”D”

END CHOOSE

Page 38: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句四、 FOR NEXT循环 FOR...NEXT是一个计数循环体。使用该语句可以是循环体中的语句被执行规定的次数。该语句的语法格式为:

FOR 循环变量 = 初值 TO 终值 [step 步长 ]执行循环体NEXT

Page 39: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句

循环变量 = 初值

循环变量在终值和初值之间

执行循环体

循环变量 = 循环变量 + 步长

F

Next后面的语句

T

Page 40: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句 步长增量缺省值为 1 。在使用 FOR NEXT语句的时候应该注意,循环变量是 integer型,终值的值不能取得过大,以防超出 integer的取值范围,造成溢出。

例子: 1.integer array1[16]FOR i = 1 to 16 array1[i] = iNEXT

Page 41: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句2. 求 1—16 所有奇数的和

integer i,ss=0for i=1 to 16

if Mod(i, 2)=1 thens=s+i

end ifnext

其中 mod() 是 powerscript 的求余函数:mod(x,y) 返回 x/y 的余值

Page 42: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句也可以

integer i,s s=0

for i=16 to 1 step –1if mod(i,2)=1 then

s=s+iend if

next上例也可以换一种做法:integer i,ss=0for i=1 to 16 step 2

s=s+inext

Page 43: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句四、 DO…LOOP循环DO…LOOP是一个通用的循环语句。它包括四种形式:1 . DO UNTIL … LOOP 根据条件执行循环体 Loop后的语句 FTDO UNTIL … LOOP的语法格式为:DO UNTIL 条件循环体

LOOP条件

执行循环体 Loop后的语句F

T

Page 44: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句 其中条件代表循环进行的条件表达式,循环体表示循环执行的语句。 DO UNTIL 语句执行循环体的语句直到 UNTIL 后面标明的条件表达式结果为 TRUE ,如果在第一次该计算表达式时结果即为 TRUE ,则循环体中的语句不会被执行。

Page 45: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句例子:我们使用 do_loop 来做上述求 1—16 所有奇数的和

int i,ss=0

i=1do untile i>16

s=s+i i=i+2

loop

Page 46: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句2.DO WHILE … LOOP条件执行循环体 Loop后的语句 TF

DO WHILE … LOOP的语法格式为:DO WHILE 条件循环体

LOOP 其中条件代表循环进行的条件表达式,循环体表示循环执行的语句。 DO WHILE语句在WHILE后的表达式结果为 TRUE时,执行循环体中的语句,如果第一次对表达式求值的结果即为FALSE,则循环体中的语句不会被执行。

Page 47: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句Integer i=1Integer s=0DO while i<=16

s=s+ii=i+2

LOOP

条件

执行循环体 Loop后的语句

T

F

Page 48: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句3. DO … LOOP UNTIL 条件执行循环体 Loop 后的语句

DO … LOOP UNTIL 的语法格式为:do循环体LOOP UNTIL 条件

条件

执行循环体

Loop后的语句

F

T

Page 49: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句 其中条件代表循环进行的条件表达式,循环体表示循环执行的语句。 DO LOOP UNTIL语句在UNTIL后表达式结果为 FALSE时执行循环体中的语句,直到表达式结果为 TRUE时结束,但是循环体中的语句至少被执行一次。

Integer i=1Integer s=0Do s=s+ii=i+1

Loop until i>16

Page 50: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句4 DO … LOOP WHILEDO … LOOP WHILE 的语法格式为:条件执行循环

体 Loop 后的语句 TFDO 循环体

LOOP WHILE 条件条件

执行循环体

Loop后的语句

T

F

Page 51: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句 其中条件代表循环进行的条件表达式,循环体表示循环执行的语句。 LOOP WHILE 语句当 WHILE后面的条件表达式的结果为 TRUE的时候,执行循环体中的语句,如果表达式计算结果为 FALSE,循环结束,但至少被执行一次。

Page 52: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句六、 CONTINUE 在 DO…LOOP或者 FOR…NEXT语句循环体当中,遇到 CONTINUE语句的时候,将不执行在 CONTINUE后面和循环结束之前的语句,开始新一轮循环。例如在下面的例子中,如果 i 的值大于 36,则开始下一次循环。

Integer s=0FOR i = 1 TO 50IF i <= 36 THEN s=s+iELSE CONTINUE End ifNEXT以上例子是求 1 到 36的和

Page 53: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句六、 CONTINUE

Integer a=0, b=0, CountFOR Count = 1 to 100a=a+1IF Count > 15 Then Continueb=b+1NEXT

结果: a=100, b=15

Page 54: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句七、 EXIT语句在 DO...LOOP或者 FOR...NEXT语句循环体当中,使用EXIT可以跳出循环。

例子FOR I = 1 TO 36IF I>10 THEN EXITNEXTMessagebox(“注意“,”循环结束“ )

Page 55: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句八、 HALTHALT语句用于终止应用程序的运行。该语句的语法为:HALT [CLOSE] 遇到不包含 CLOSE选项的 HALT语句时,应用程序立即终止。当包含 CLOSE的时候,应用先执行 CLOSE事件所对应的处理程序,然后再终止应用程序。

九、 RETURN语句RETURN语句用于从脚本中返回调用程序。其语法格式为:RETURN [返回值 ]其中 EXPRESSION代表该脚本的返回值。

Page 56: 第 8 章  PowerScript  语言

数据库管理系统

8.4 powerscript语句十、 GOTO 语句GOTO 语句控制程序流程,其语法格式如下:GOTO Label其中 label 代表语句标号,其命名应符合标标识符的命名规则。例子:

integer I=1integer s=0

LABEL1 :S=s+II=I+1

If I<=16 then GOTO LABEL1

Page 57: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数一. messagebox函数messageBox函数常用于在屏幕上显示出错、警告、提示及其

他重要信息,表现方式为在屏幕上弹出一个的对话框。用户响应该对话框后,程序继续运行。

Int messagebox (title,text,[,icon[,button[,default]]])

其中 title,text参数是必须的,其他方括号中的参数是可选的。

title: string类型,指定消息对话框的标题。Text:指定对话框中显示的消息Icon:枚举类型,可选,指定要在该对话框左侧显示的图表Button:枚举类型,可选,指定对话框底部的按钮。Default:指定省缺的按钮编号。

Page 58: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数

例如:int retret=messagebox(“注意” ,”是否存盘?” ,Question!,YesNo!, 1)

if ret=1 then存盘操作

end if

Page 59: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数二. open函数open函数用来打开一个窗口open(窗口名 )例如:open(w_1)打开一个名字为 w_1的窗口三. close函数close函数用来关闭一个窗口close(窗口名 )例如:close(w_1)

Page 60: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数run函数run函数用于在 powerbuilder中运行其它的

windows程序,run(应用名,状态 ) 状态是一个枚举型变量

maximized!

Minimized!Normal!

run(“c:\windows\calc.exe”,normal!)

Page 61: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数五 颜色函数 RGB()与 Windows系统一样, PowerBuilder使用长整数表示颜色。我们可以直接把表示颜色的长整数赋给对象或控件的颜色属性,但为了方便直观,通常使用 RGB()函数把红、绿、蓝三色分量组合成一个表示颜色的长整数,例如, RGB( 0,255,0)表示绿色,显然它比等价的长整数 65536要直观的多。

RGB()函数的语法格式为: RGB ( red, green, blue )

Page 62: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数 其中, red表示颜色中的红色分量强度,有效值在 0

到 255之间; green表示颜色中的绿色分量强度,有效值在 0 到 255 之间; blue 表示颜色中的蓝色分量强度,有效值在 0 到 255之间。

上述各分量中,数值越小,亮度越低,数值越大,亮度越高。

例如, RGB ( 0,0, 0 )为黑色(亮度最低), RGB ( 255, 255,255 ) 为白色(亮度最高)。下面列出了常用的 16种颜色的红、绿、蓝分量。

Page 63: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数黑色( Black ) 0 0 0 白色( White ) 255 255 255 浅灰色( Light Gray ) 192 192 192 深灰色( Dark Gray ) 128 128 128 红色( Red ) 255 0 0 深红色( Dark Red ) 128 0 0 绿色( Green ) 0 255 0深绿色( Dark Green ) 0 128 0 蓝色( Blue ) 0 0 255 深蓝色( Dark Blue ) 0 0 128

Page 64: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数紫色( Magenta ) 255 0 255深紫色( Dark Magenta ) 128 0 128 青色( Cyan ) 0 255 255 深青色( Dark Cyan ) 0 128 128 黄色( Yellow ) 255 255 0褐色( Brown ) 128 128 0改变窗口背景色w_1.backcolor=rgb(255,0,0)

Page 65: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数六、响铃函数 Beep() Beep()函数让计算机发出响声,常用于提示用户发生了某种错误,语法格式为: Beep ( n )参数 n 是个整型数,它指明响铃几次,如果 n 的值大于 10,计算机也只响 10次铃,通常一两次已经足够。

Beep(2)

Page 66: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数七、文件函数 powerbuilder提供了一些函数对文件进行读写、打开等操作。

在 powerbuilder中可以通过两种方式读写文件 行模式: 读文件时,字符传送一直进行直到遇到回车或换行,以

行为单位写文件时,在所写的每一行文本上加一个换行或回车。

流模式:

Page 67: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数1.打开一个文件int

FileOpen(filename,filemode,fileAcess,FileLock,writemode)

filename :string 文件名,可以包含路径filemode:枚举类型,指定文件打开的方式

Linemode! 行模式 StreamMode! 流模式

Fileaccess:枚举类型 Read! 只读方式Write! 只写方式

Page 68: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数Filelock :枚举类型

Lockreadwrite!,只有打开该文件的用户才能访问该文件,其他用户不能对文件进行操作

LockRead!:只有打开该文件的用户才能读文件,其他用户均可写文件

LockWrite!:只有打开文件的用户才能写文件,其他任何用户只能读文件

Shared!: 所有用户均可读写文件Writemode:枚举类型,当 fileaccess参数为 write! 时,该参数指定在指定文件已经存在时数据的添加方式。

Append!——缺省值,将数据添加到原文件尾部

Replace!——覆盖原有的数据

Page 69: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数 Fileopen()函数执行成功时返回打开文件的句柄,随后的文件操作函数利用该句柄完成对文件的操作。

Integer li_filenumLi_filenum=fileopen(“empolyee.dat”)用行模式、读入方式打开一个文件li_filenum=fileopen(“c:\dept\

employee.dat”,streammode!,write!,lockwrite!,replace!)

使用流模式、写文件方式打开文件,在向该文件写数据时用现在数据替代原有数据。

Page 70: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数2.关闭文件fileclose(filenumber)关闭文件后,就可以恢复其它用户对文件的访问。Fileclose(filenumber)3.读文件int fileread(filenumber,string 或 blob变

量 )返回值: -100 ——文件结束

-1——出错——若先读到 LF或 CRx——读入的字符数或字节数integer nfile,count=0

Page 71: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数string filestring[]nfile=fileopen(“c:\

test.dat”,LineMode!,Read, LockReadWrite!)

do ncount++

loop while fileread(nfile,filestring[ncount])>0

fileclose(nfile)当 powerbuilder打开一个文件时,它为每一个文件分配一个独有的编号,用户在 powerscript所有文件操作都用该值表示。

Page 72: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数4.写文件FileWrite(filenum,string 或 blob变量 )若写方式是 append!,则在文件尾部开始写若写方式是 Replace!,则把文件内容替换成新写入的内容。Integer nfile,iString filelines[3]Filelines[1]=’my file1”Filelines[2]=’myfile2”Filelines[3]=”myfile3”Nfile=fileopen(“text.txt”,linemode!,write!,lockreadwrite!,append!)

For I=1 to 3Filewrite(nfile,filelines[I])

NextFileclose(nfile)

Page 73: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数5.使用 windows文件对话框打开文件

int getfileopenname(title,pathname,filename,后缀名,过滤器 )

返回值, 1—— 成功 0——取消 -1—— 错误

string fullname,nameinteger retinteger filenumret=getfileopenname(“打开文

件” ,fullname,name,”doc,textfiles (*.text),*.txt)if ret=1 then filenum=fileopen(fullname)

Page 74: 第 8 章  PowerScript  语言

数据库管理系统

8.5 常用的标准函数保存文件对话框getfilesavename()与 getfileopenname()参数

用法相同

Page 75: 第 8 章  PowerScript  语言

数据库管理系统

1. name2. 2student3. saf_ag4. id 0015. name-16. id#7. girl’side

Page 76: 第 8 章  PowerScript  语言

数据库管理系统

1. name2. 2student3. saf_ag4. id 0015. name-16. id#7. girl’side

Page 77: 第 8 章  PowerScript  语言

数据库管理系统

语言基础

对象、属性、函数和事件的引用方法

访问对象属性的格式 对象名 . 对象属性

访问对象函数的格式 [ 对象名 .] [FUNCTION] 函数名 ([参数表

列 ]) 访问对象事件的格式

[ 对象名 .] [EVENT] 事件名 ([参数表列 ])