《计算机信息管理基础-第12讲.ppt》由会员分享,可在线阅读,更多相关《计算机信息管理基础-第12讲.ppt(86页珍藏版)》请在三一办公上搜索。
1、重庆大学全日制本科计算机基础系列课程,计算机信息管理基础,重庆大学计算机学院 曾一,第12讲,PowerBuilder编程基础,重庆大学计算机学院 曾一,本章主要内容,PowerBuilder编程基础PowerBuilder的各主要元素PB脚本PowerScript,1.PowerBuilder,一种可视化的面向对象的快速应用程序开发环境。面向对象的,整个应用程序由大量对象组成,对象之间存在消息传递。PB中,窗口(window)是主要的用户界面。PB是一个开放的应用程序开发环境,它可以访问很多常用的后台数据库系统。PB的应用程序是事件驱动的,这就是说运行于该环境下的程序并不是顺序执行的,而是用
2、户通过各种动作控制应用程序的流程。,PowerBuilder界面,菜单栏,工具栏,系统树窗口,剪贴窗口,属性区,工作区,输出窗口,应用程序结构,应用属性,应用程序对象的属性,General选项卡,应用程序对象名称,应用程序的显示名称,设置状态条的默认文本,默认设置为Ready,定义显示数据窗口消息对话框时的默认标题,应用程序对象的附加属性,2.应用程序对象的方法和事件,(1)Open事件open事件是一个重要的事件,它表明了应用程序对象开始执行。该事件只发生一次,且必须为其编写脚本代码。Open事件脚本的功能应该是初始化运行环境,并打开程序的主窗口。,应用程序对象的方法和事件,应用对象的事件-
3、open,脚本/设置事务对象的参数SQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=ConnectString=DSN=my_db;uid=dba;pwd=sql“/连接数据库CONNECT USING SQLCA;/连接数据库/打开窗口IF SQLCA.SQLcode0 thenmessagebox(数据库连接失败!,SQLCA.SQLErrText,stopSign!,OK!)ELSE open(w_main)/打开主窗口End if,应用对象的事件-close,脚本:/断开与数据库的连接DISCONNECT USING SQLCA;/判断
4、断开数据库的情况IF SQLCA.SQLcode0 thenmessagebox(“数据库断开失败!”,SQLCA.SQLErrText,stopSign!,OK!)End If,3.窗口对象和常用窗口控件,窗口是Windows应用的可视图形操作界面,是PB中主要的组成部分用户通过窗口向应用程序提供必要的数据,直接操作应用程序;应用程序通过窗口显示运行状态和执行结果。窗口的组成属性:定义窗口的外观和行为;事件:由用户动作触发而进行的动作;控件:放在窗口上,用于请求、输入或显示信息。,窗口的类型,PB提供下列几种类型的窗口:1)主窗口(Main):2)子窗口(Child):3)弹出式窗口(Pop
5、up):4)响应窗口(Response):5)框架窗口及带微帮助的框架窗口:(MDI Frame and MDI Frame with Microhelp),窗口对象,定义窗口的属性:窗口的属性用于指定窗口的表现形式。可以在设计窗口时通过打开窗口的属性框来定义或修改;也可以在程序运行时动态地修改。打开窗口的属性框:在窗口的空白工作区双击,或右键选属性项,或单击工具栏属性图标,或选择Edit/Properties。可看到四个属性标签页,每个标签页中包含一类属性值。,常用窗口控件,控件大致可以分为四类:激活动作类型包括命令按钮和图片命令按钮等。选择项类型包括单选按钮、复选框。还可以用选项组控件对这
6、些选择项控件进行分组。显示数据类型包括列表框、图片列表框、数据窗口、下拉列表框、下拉图片列表框、静态文本框、图形、列表窗口、树状窗口、多格式文在编辑框、进度条、滚动条、单行编辑框、多行编辑框、编辑掩码控件以及OLE控件等。修饰类型这些控件是绘制对象,如图片、直线、矩形、圆角矩形和椭圆等。,7种常用窗口控件,1)Commandbutton(命令按钮)控件Default(默认)属性和cancel(取消)属性 Clicked事件 2)StaticText(静态文本框)静态文本控件常用于向用户显示提示信息或说明没有标题的控件等。属性:Text:显示的文本Border:有否边框Alignment:对齐方
7、式Border Color:选择边框的颜色Fill Pattern:指定填充图案,3)SingleLineEdit(单行编辑框)和MultiLineEdit(多行编辑框)单行编辑框和多行编辑框都是用于文本输入和输出的控件。单行编辑框通常用于输入一行文本;而多行编辑框则用于输入大量多行文本。Text属性Password属性,7种常用窗口控件,常用窗口控件,4)EditMark(编辑掩码控件)掩码编辑框与单行编辑框的外观完全一样但是掩码编辑框可以通过创建的掩码完成格式化的输入。属性:MaskDataType:掩码类型Mask:掩码字符串Spin:微调控件项Min:最小值Max:最大值,常用窗口控件
8、,5)RadioButton(单选按钮)、CheckBox(复选框)单选按钮控件表示在一组选项按钮中只有一个按钮可以被选中,它们通常只用于表示某些选项的状态,而不用于激活动作,单选按钮的checked属性为True(选中)。单选按钮一般总是安排在选项组中使用。复选框用来表示或让用户选择一组状态,多个复选框是彼此相互独立的。复选框被选中,checked属性为True。复选框未被选中,checked属性为False。复选框为第三种状态,ThirdState属性设置为True。,常用窗口控件,6)ListBox(列表框)和DropDownListDox(下拉列表框)列表框在一个矩形框中显示多行文本,
9、主要用来提供多个选项供用户选择。sle_1.text=lb_1.selecteditem()/选中内容给单行编辑框下拉列表框与列表框的功能用途类似,它是将单行编辑体与列表框的功能结合起来。sle_1.text=ddlb_1.text/选中内容给单行编辑框,属性 text:选中的文本列表项:items标签页中列出AllowEdit:选中后,允许用户编辑列表项ShowList:选中后,下拉列表框仅用于列表显示,不具备下拉功能。相当于列表框。事件Selectionchanged事件:改变选项后触发该事件DoubleClicked事件:双击某选项时触发Modified事件:列表框编辑确认后触发GetF
10、ocus事件:下拉列表框获得焦点时 触发LoseFocus事件:失去焦点时触发,常用窗口控件,7)Picture(图片框)图片控件一般用来美化界面。它在界面的指定位置插入一幅图片图片格式可以是BMP、WMF、GIF和JPG等格式。属性:Picturename:图片的文件名Invert:反转图片颜色,常用窗口控件(图示),4.窗口对象和常用窗口控件的运行和预览,运行、预览窗口 要查看设计好的窗口效果,可在系统树窗口的某窗口名处单击右键,选Run/Preview。,5.建立菜单,1)菜单基本概念,2)菜单分类下拉式菜单下拉式菜单由菜单标题和菜单项组成,位于菜单栏上。用户选择菜单标题后,弹出该标题下
11、的菜单项。弹出式菜单弹出式菜单与对象相关联,也叫做上下文菜单。当用户在某对象内单击鼠标右键时,在鼠标指针处打开相应的弹出式菜单。级联菜单级联菜单可以出现在前两种菜单中,在其父菜单项后面有个箭头符号,表示该菜单项后有级联菜单。,3)菜单设计菜单是一种独立的对象,它用Menu(菜单)画板来建立和修改,在Menu画板中提供了WYSIWYG(所见即所得)的窗口。,4)创建菜单对象 在PB Object选项卡中,选择Menu图标,然后单击OK按钮打开Menu画板 添加菜单项选择InsertSubmenu菜单项,或在所见即所得视图区单击右键,从弹出式菜单中选择Insert Submenu Item菜单项。
12、设置快捷键:在定义的加速键前面加上&符号,如设置菜单:文件(F),则输入菜单项应为:文件(&F)设置快捷键:利用菜单项属性ShortCut设置分隔线:-一个减号,菜单属性,General选项卡,Toolbar选项卡,5)菜单的使用,通过窗口属性MenuName中输入菜单名,将菜单连接到相应的窗口上注意窗口的Window Type 属性必须为mdi!或mdihelp!,6)菜单事件Clicked事件触发时机(1)用鼠标单击菜单项。(2)用键盘选中菜单项,然后按Enter键。(3)按下菜单项的快捷键。(4)菜单项显示在屏幕上时,按下加速键。注意:只有在菜单项的Visible和Enabled属性均为
13、True时,菜单项才会响应鼠标单击或键盘操作。,示例:,6.脚本语言PowerScript,1)PowerScript基本概念 断行、续行与分隔符 分隔符:PowerScript的行分隔符是分号“;”。断行:可以加上分隔符表示断行,把多条语句写在一行上。续行:在语句中间加上续行符“&”,换行后接着书写。注释:行注释:以双斜杠“/”开始到行结束。块注释:以“/*”开始到“*/”结束。标识符标识符是指在程序中使用的变量、标号、函数、窗口、控件、菜单及所引用对象的名称。,6.脚本语言PowerScript,1)PowerScript基本概念在PowerBuilder8中,标识符的命名遵从下述规则:标
14、识符必须以英文字母或者下划线“_”开头标识符不能是保留字标识符只能由字母、数字和如下特殊字符组成:短划线“-”,下划线“_”,美元符“$”,号码符“#”和百分号“%”标识符不区分大小写字母标识符不能超过40个字符,且中间不能出现空格保留字:是PowerBuilder 内部使用的一组单词,有着特殊的含义,不能再把它们用做标识符 代词:This、Parent、ParentWindow 和Super,2)标准数据类型,3)变量与常量,无论是常量或是变量在使用前都应先声明,以便编译时分配适当的存储空间,并且声明的格式、位置不同,其作用域和可见性也不同。变量变量是指在程序运行过程中可以改变的量。在应用中
15、,使用变量前必须先予以声明。声明变量的简单语法格式为:数据类型名 变量名=初始值 其中,数据类型 变量名为任何合法的标识符,声明变量时可以直接把一常量或表达式的值赋给它(初始化),变量初始化是在编译时进行,而不是在运行时完成。如果声明变量时不赋初值,系统将按数据类型的默认值自动赋初值可以在同一条语句同时声明多个相同类型的变量,之间用逗号(,)分隔即可。语法格式为:数据类型名 变量名=初始值,变量名=初始值,变量名=初始值,常量,常量是在程序运行过程中其值保持不变的量。声明常量时需要加关键字CONSTANT,必须赋初值,并且不能再改变。常量声明的语法格式为:CONSTANT 数据类型 常量名=值
16、其中常量名一般用大写字母表示,以便将其和变量名区别开来。注意,声明常量时不能在一行中进行多项声明。,数组,组成数组的变量称为元素,每一个元素都有唯一索引号(下标),用于将其与其它元素区分开来。数组有两种类型,即一维数组和多维数组,多维数组的大小必须确定,而一维数组的大小可以确定,也可以不确定。声明数组的语法格式如下:数据类型 数组名d1,dn=初值,4)变量的作用域,作用域即使用范围,无论是变量还是常量都有自己的作用域全局变量(Global)全局变量可以在整个应用程序中被访问,它的作用域是整个应用程序。实例变量(Instance)实例变量属于某个对象(应用程序、窗口、用户对象或菜单)并与该对象
17、相关联,只有在该对象及与该对象相关的控件的脚本中才能使用其定义的实例变量。,共享变量(Shared)共享变量和实例变量类似,只能在定义共享变量的对象和与该对象相关的控件的脚本中访问共享变量。但是,共享变量与实际的类定义相关联,而与对象实例无关,这意味着所有同类实例都可共享相同的变量。共享变量是一种静态变量,将保存其最后的设置,也就是说,它所在的对象关闭后再次打开时,共享变量依然保持对象关闭时的值。局部变量(Local)局部变量在使用它的事件或函数中声明,它仅属于声明它的脚本,在该程序段的任何地方均可访问局部变量,但其它程序段不能访问该程序段中的局部变量。运行程序后,进入某个程序段时,自动为该程
18、序段的局部变量分配内存,退出程序段时局部变量占用的内存被释放。,5)运算符与表达式,运算符表示了一个或两个操作数之间的运算操作PowerScript利用运算符构成表达式,完成一定的运算。算术运算符,扩展算术运算符,关系运算符,逻辑运算符,连接运算符连接运算符“+”用于把String型变量的内容连接起来。例如:string TestTest=中国+重庆/Test 中包含中国重庆,运算符的优先级,6)表达式,表达式是由算术运算符、关系运算符及逻辑运算符连接起来的变量、常量构成的语法单位。,7)基本语句,(1)赋值语句语法格式为:variablename=expression其中,variablen
19、ame代表变量名,expression代表表达式,也可以是字符串、数字、变量或常量以及数组等。在赋值语句中,若等号右边是表达式,则先将其结果转化为等号左边变量的类型后,再赋值给变量。如:s=a*h/2,(2)条件控制语句IF语句(a)单行IFTHEN语句语法格式为:IF condition THEN action1 ELSE action2(b)多行IFTHEN语句语法格式为:IF condition1 THEN Action1 ELSEIF condition2 THEN Action2ELSE Action3END IF注意:多行IFTHEN语句即使只有action1一个语句块,也需要EN
20、D IF表示多行IFTHEN的结束。,CHOOSE CASE语句适用于多分支选择结构语法格式为:CHOOSE CASE test_expressionCASE expression_list1statementblock1CASE expression_list2statementblock2CASE expression_listnstatementblocknCASE ELSEstatementblock n+1END CHOOSE,其中test_expression 是测试表达式,expression_list 是判断表达式,statements 是满足条件时执行的语句块,方括号表示该成
21、分可以省略。expression_list可以使用如下的形式:用逗号分隔的一组数据,例如2,4,7用to 表示一个区间范围,例如2 to 15用is 代表测试值,后跟关系运算符和比较值,例如is 30组合运用上述三种方法,并用逗号进行分隔,例如5,6,8 to 12,is 20,(3)循环控制语句 PowerScript 的循环语句有两种形式DO LOOP和 FOR NEXT,可以与EXIT 和CONTINUE 语句配合使用DO LOOP 循环四种形式结构分别为:DO UNTIL condition LOOPDO WHILE condition LOOPDO LOOP UNTIL condit
22、ionDO LOOP WHILE conditionDO 表示循环的开始,LOOP 表示循环的结束,condition 表示循环条件,是逻辑表达式,其值为True 或False,DO UNTIL conditionLOOP语法格式为:DO UNTIL conditionStatementblockLOOP执行过程为先判断控制条件condition,如果为false,则执行语句块statementblock,执行到LOOP后,接着判断条件condition,直到结果为true时结束循环。,DO WHILE conditionLOOP的语法格式:DO WHILE conditionStatemen
23、tblockLOOP执行过程为先判断控制条件condition,如果为true,则执行语句块statementblock,执行到LOOP后,接着判断条件condition,直到结果为false时结束循环。,DOLOOP UNTIL condition的语法格式:DO StatementblockLOOP UNTIL condition执行过程为先执行语句块statementblock,然后判断控制条件condition,如果为false,则继续执行语句块statementblock,直到condition的结果为true时结束循环。,DOLOOP WHILE condition的语法格式为:D
24、O StatementblockLOOP WHILE condition执行过程先执行语句块statementblock,然后判断控制条件condition,如果为true,则继续执行语句块statementblock,直到condition的结果为false时结束循环。,FORNEXT语句语法格式为:FOR varname=start TO end STEP incrementStatementblockNEXT其中,varname 是循环变量,可以是任意的数值类型,start、end 分别是循环变量的初值和终值。increment 是每次循环后循环变量的步长增量,缺省值为1,stateme
25、nts 是一组语句称做循环体。FOR-NEXT 语句的执行过程为:循环变量varname 从start 开始到end 为止,重复执行循环体,每执行一次varname,被重新赋新值为varname+increment。,(4)EXIT语句EXIT语句是中途结束循环的语句。注意:如果在循环嵌套中使用EXIT语句,那么执行EXIT语句只能退出当前层的循环,而不能退出所有循环。(5)CONTINUE语句CONTINUE语句控制循环的执行使之返回循环开始处。,(6)RETURN语句RETURN 语句立即终止事件处理,程序或函数的执行把控制返回到调用程序,其语法格式为:RETURN expression
26、其中expression 是个表达式,其值作为事件处理程序或函数的返回值。(7)HALT语句HALT 语句用于终止应用程序的运行,其语法为:HALT CLOSE其中CLOSE 是个可选项,当HALT 语句不带CLOSE 选项时,该语句立即终止应用程序的运行;当HALT 语句带CLOSE 选项时,执行到该语句后应用程序先执行应用对象的Close 事件处理程序,之后再终止应用程序的运行。,8)常用标准函数,(1)MessageBox()函数使用MessageBox()函数可以向用户显示或提示各种信息。语法如下:MessageBox(title,text,icon,button,default)ti
27、tle是一个被用来确定MessageBox标题的字符串。text是在MessageBox中显示的文本。icon用来指示显示在MessageBox左侧的图标。可选的值有Information!StopSign!、Exclamation!、Question!、None!。,button用来指示你想要显示的命令按钮的集合。这些值是OK!、OKCancel!、YesNo!、YesNoCancel!、RetryCancel!、AbortRetryIgnore!。默认值是OK!。default指定默认的按钮函数返回值:Integer,函数执行成功时返回用户选择的按钮编号例如1,2,3 等,发生错误时返回-
28、1 举例:ll=MessageBox(保存修改,您修改了数据现在是否保存,Question!,YesNoCancel!),(2)Open函数打开一个PowerBuilder窗口格式:Open(window-name)(3)Close函数关闭一个PowerBuilder窗口格式:Close(window-name)例如:下面的代码关闭窗口w_employee 然后打开窗口w_departments Close(w_employee)Open(w_departments),(4)数据类型检查函数数据类型检查函数又称为Is簇函数它们用来判断一个字符串是否符合某种数据类型的格式,返回值是一个布尔类型的
29、值。Is簇函数的语法格式为:Is*(string)其中string为要测试的字符串。IsNumber()用于测试某字符串是否为有效数值。IsDate()检测指定的字符串是否包含有效日期。IsTime()检测指定的字符串是否包含有效时间。IsNull()测试某变量或表达式的值是否为Null。,(5)数据类型转换函数,9)自定义函数,参数的传递方式有以下三种:Value 表示值传递,将实际参数的值传递给函数。Reference地址传递,把实际参数的地址传递给函数,如果函数修改了形式参数的值,则实际参数的值也就被修改了。Readonly只读地址传递,把实际参数的地址传递给函数,但不允许修改参数的值。
30、,9)自定义函数,自定义全局函数(1)选择FileNew菜单项,或在工具栏中单击New图标,打开New对话框,单击PB Object选项卡。(2)选择Function图标,然后单击OK按钮,或者直接双击该图标,打开Function画板,9)自定义函数,(3)在Function Name项中输入函数名,自定义全局函数的命名一般用“f_”开头,命名规则即标识符的命名规则;在Return Type下拉列表框中选择函数的返回值类型,如果函数没有返回值,则选择“None”项;在Pass By下拉列表框中选择参数传递方式;在Argument Type下拉列表框中选择参数类型;在Argument Name项
31、中输入参数名(即形式参数,简称形参),命名规则即标识符的命名规则。(4)编写完函数脚本后可以编译并保存该函数。,7.数据窗口,数据窗口的设计思想一个数据窗口通常由数据窗口控件和数据窗口对象两部分组成。数据窗口控件是被粘贴到窗口上的窗口级对象,提供了一个展示数据窗口对象的窗户,它可以在窗口中通过画板工具栏创建。数据窗口对象直接关联数据表,主要用于显示数据并允许用户增删改数据。通过在数据窗口中控件的Data Object属性中设置有关的数据窗口对象的名字,将数据窗口对象和窗口联系在一起,并把数据对象显示给用户。,数据窗口对象有两个重要术语:数据源和数据显示风格数据源指如何获取数据,即数据的来源。显
32、示风格指数据窗口对象以何种格式显示给用户,即用户如何和数据窗口交互。创建数据窗口对象的步骤:File-New-DataWindow-选择表现风格、数据源(Data source)设置数据表及数据列保存,数据窗口对象的工作带,数据窗口中各工作带的作用,数据窗口的应用,数据窗口对象定义好之后,一般要与窗口界面上的数据窗口控件相关联,用户通过数据窗口控件(dw_1)操作数据窗口对象,进而操作数据库。下面一小段程序代码说明了使用默认事务对象SQLCA连接到一个ASA数据库,以及检索该数据库的方法:SQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=Con
33、nectString=DSN=my_DB;UID=dba;PWD=sqlconnect;dw_1.settransobject(SQLCA)IF SQLCA.SQLCode 0 THENMessageBox(连接失败,不能连接到数据库原因为+SQLCA.SQLErrText)RETURNEND IFdw_1.retrieve()/数据从数据库检索到数据窗口中Disconnect;,数据窗口,上述程序段包括下列几步:与数据库连接为数据窗口设置事务对象进行数据库处理(查询、修改)断开与数据库连接即:/写在应用的open事件中 创建事务对象,并赋值,使其与数据库相连。connect;/写在窗口的op
34、en事件 settransobject()retrieve()/写在应用的close事件中 disconnect 删除自己创建的事务对象(destroy),数据窗口,常用函数说明:Settransobject():将一个事务对象与DataWindow控件联系起来。Retrieve():读取数据库中的数据。InsertRow(row):向DataWindow控件插入一个新行。DeleteRow(row):从DataWindow控件中删除一行。当参数的值为0 时删除当前行。Update():将DataWindow中所做的改变应用到数据库中。,数据窗口常用函数,连接事务对象的函数Settransob
35、ject()函数参数为事务对象例:dw_1.Settransobject(sqlca)滚动数据行函数Scroll()和ScrollToRow()函数 long dwcontrol.Scroll(long number)number指定要滚动的方向和行数。number为正数,表示向下滚动;若number为负数,表示向上滚动。如果该函数执行成功,那么将返回数据窗口控件中可见的第一行的行号;如果执行失败,则返回-1。,数据窗口常用函数,Retrieve()函数Retrieve函数的功能是用指定的事务对象从数据库中把数据检索到数据窗口进行显示。Retrieve函数的语法格式为:long dwcontr
36、ol.Retrieve(any argument,any argument.)其中:argument是可选参数,它表示在数据窗口对象中定义的检索参数,这些参数的顺序必须和定义时的顺序相同。如果调用成功,则返回检索出的记录行数;否则,返回-1。,数据窗口常用函数(*),InsertRow()函数用来在数据窗口的主缓冲区中插入一条新记录。其语法格式为:long dwcontrol.InsertRow(long row)其中:row用于指定新行的插入位置。若row为0,则表示在所有记录的最后插入新行。例如:dw_1.InsertRow(0),数据窗口常用函数(*),DeleteRow()函数 Del
37、eteRow函数用来在数据窗口的主缓冲区中删除一行。其语法格式为:Integer dwcontrol.DeleteRow(long row)其中:row表示要删除的行的行号。若row为0,则表示要删除当前行。例如:dw_1.DeleteRow(5)表示删除数据窗口控件中的第5条记录。,数据窗口常用函数(*),Update()函数Update函数用来把数据窗口上数据的变化更新到数据库中。Update函数的语法格式为:integer dwcontrol.Update(boolean accept,boolean resetflag)其中:参数accept是一个布尔值,如果该值为true,表示在更新之前调用AcceptText函数。参数resetflag用来确定数据窗口更新后是否重设更新标记。该函数执行成功,则返回1,否则返回-1。例如:if dw_1.Update()0 thencommit;/提交elsemessagebox(,无法对数据保存!)rollback;/返回end if注释:在调用update函数后,必须做事务的管理工作,即:使用SQL语句COMMIT或ROLLBACK来结束更新操作。,本讲回顾,PowerBuilder编程基础应用对象 窗口对象和常用窗口控件 建立菜单 脚本语言powerscript 数据窗口 函数,The END,
链接地址:https://www.31ppt.com/p-6023452.html