《PowerBuilder知识材料学习资料.doc》由会员分享,可在线阅读,更多相关《PowerBuilder知识材料学习资料.doc(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本文档分为两个部分,(完全是分开的两部-没关联)第一部分: PB书本自学类容一:标识符:标识符是程序中用来代表变量,标号,函数,窗口,控件,对象等名称的符号。标识符必须是下划线或者字母开头,标识符的非开头字符可以是字母,数字或者5中特殊符号(-,_,#,%,$)标识符不区分大小写标识符的书写应保持连续,中间不能留空格。标识符的最大长度应该控制在100个字符内。保留字不能用作标识符,因为它们已经有特殊的含义。Asdf_dfdfDffds-adfDfsdf_adfDfa#dfAsdf%fggDff$fsdfThis /误用保留字二:ASCLL码字符:字符串中可以包括特殊的ascll码字符,它们不能
2、使用常规的的输入方法直接输入,要使用其他字符来替代。新行:n 制表:t 双引号:” 单引号: 等等三:代词:日常生活中可以用你,我,他之类的代词来指代特定的人物,PowerBuilder也提供了几个代词指定特定的对象。4个代词分别是:this parent parentwindow super 其中前3个广泛使用。1.This: 代表窗口,用户对象,菜单,应用对象或控件本身,即代表正在为之编写事件处理程序的对象。示例;设窗口有一个名称为cb_button的按钮,其上显示的文本是请单击在该按钮的clicked事件中可以添加如下代码:This.text= 再单机一次 :语句执行后把请单击改成了再单
3、机一次不用代词语句:cb_button.text= 再单机一次2.parent: 代表当前控件所在的窗口对象如上述例子:parent.text= 再单机一次 3Parentwindow 代表程序运行时当前菜单 所在的窗口对象,注意:改代词只能在菜单对象的事件处理程序中使用。例子:假设cb_button窗口关联了一个菜单对象,该菜单中的关闭命令用于关闭窗口cb_button,我们可以在该菜单项的clicked事件中添加如下代码:/关闭关联窗口Close (parentwindow) /等同于Close(cb_button)Super :在编写空间或对象的子对象时,子对象中可以调用父对象的事件处理
4、程序,程序中的既可直接利用父对象名称调用他们,也可以使用super代词来应用。四:对象,属性,函数和事件的应用方法。Powerbuilder应用程序的开发过程实际上就是对各种对象的定义和使用过程。所有对象都有名称,并通过名称相互区分。在powerscript中,访问对象的属性,函数,事件的方法很简单,就是使用圆点(.)作为标记符。(1) 访问对象属性的格式为:对象名.对象属性列4.1:把单行编辑框sle_name 的用户输入内容送入字符串变量userenter 的语句可以写成:Userenter= sle_name.text (2)访问对象的函数与事件的格式为:Objectname. type
5、 calltype when functionname (argumentlist)l objectname:对象名l type: 取值为function 或 event ,用于指明访问函数还是事件,默认值是function。l calltype: 用于指明查找函数的时机,有效取值为:static(默认值),编译时查找函数,若不存在,产生编译错误;dynamic,程序运行时查找函数,若不存在,产生运行错误。l when: 用于指明函数或事件是立即执行还是当前程序段执行完毕后执行,取值为 TRIGGER(默认值),立即执行;POST,当前程序段执行完毕后执行。l Functionname:指明调
6、用的函数或事件名称。l Argumentlist: 给出函数或事件的参数。例4.2:对象函数和事件的调用示例。代码如下/想把输入焦点移动到单行编辑框sle_name上,程序中的代码是Sle_name.setfocus()/想立即执行按钮cb_name的单击事件处理器,那么编写代码Cb_name.event trigger clicked五:保留字保留字是powerbuilder内部使用的一组单词,有着特殊的含义,不能再把他们用作标识符。如果应用程序误把保留字用作了标识符,那么powerbuilder将给出编译错误。 在powerbuilder中保留字一般显示为绿色。六:数据类型Powerbui
7、lder的数据类型十分丰富,主要包括:标准数据类型,any 数据类型,系统对象数据类型和枚举类型,共4大类。程序中通过数据类型限定变量的取值范围。在powerscript中,我们使用数据类型来声明变量或数组。1标准数据类型:Blob 二进制大对象,用于存储大量数据,例如图像.大文本等。Boolean 布尔型,true 或falseCharacter/char 单个ASCLL字符Date 日期,包括年(1000-3000)月(01-12) 日(01-31)Datetime 日期及时间,仅用于访问数据库的datetime型数据Decimal/dec 带符号十进制数,最大18位精度。Double I
8、nteger/int 16位带符号整数,范围从-2147483648 到 +2147483648RealString 字符串类型,用于任意的ASCLL字符,比如计算机abcUnsignedinteger 16位无符号整数,范围0-65535Unsignedlong 32位无符号整数,范围0-42949762952.常量的申明在编写代码时,对应用程序不应该修改的数据声明成常量是个好办法:一来提高了程序的可读性和可维护能力,二来避免了意外的修改,降低了编码出错的概率。声明常量使用 constant,其简单语法为:Constent 数据类型.常量名= 常量值3.变量的作用域:作用域是指用户定义的变量
9、在什么范围内有效。Powerbuilder的变量作用域共有4种:全局变量,实例变量,共享变量和局部变量。*全局变量:在整个应用程序中都可以访问,他的作用域是整个应用程序*实例变量:实例变量和对象相关联,只有在该对象的事件处理程序或函数中才能使用为该对象定义的实例变量。实例变量在它所关联的对象打开时创建,被关闭时消失。*共享变量:共享变量是一种静态变量,这不仅意味着它所在的对象关闭后如果再次打开时,共享变量依然保持对象关闭时的值,还意味着同一个类的多个实例中的同名共享变量将保持相同的值。*局部变量:局部变量在使用它的事件处理程序或函数中声明,其作用域仅限于声明它的程序段,在该程序段的任何地方均可
10、访问局部变量,但其他程序段都不能访问本程序段中的局部变量。运行程序后,进入某个程序段时,系统自动为局部变量分配内存,退出程序时,局部变量占用的内存被释放。4.变量的默认值变量类型 默认值 Blob 长度为0,空的二进制大对象Boolean falseChar ascll码0Date 1900-01-01Datetime 1900-01-01 00:00:00数值类型* 0String 空字符串(“”)Time 00:00:00七:运算符1算术运算符算术运算符用于完成数学运算+ - - * / + - += -= *= /= =2.关系运算符关系运算符用于比较两个操作符,比较的结果为下述3个值之
11、一(true , false, null )= = =在进行运算符比较时,应注意到这些运算符进行的比较是区分大小些的比较,也就是说Aa。需要时可使用powerscrpt的字符串操作函数进行适当的转换,这类函数包括:Upper() 转换成大写Lower() 转换成小写Righttrim() 删除右部空白Lefttrim() 删除左部空白Trim() 删除两端空白3逻辑运算符 Not and or 4连接运算符连接运算符只有一个,那就是+,用于把两个string型或blob型变量的内容连接在一起,形成新的字符串或blob型数据。4.1例:string testtest =北京 + 上海 /test
12、中包含“北京上海”5.基本语句 Powerscript的基本语句主要包括赋值语句,条件语句,循环语句。5.1赋值语句:用于给变量或对象赋值,使用最频繁的语句。其中语法格式为:Variablename (变量名或对象名) = expression(是表达式,其数据类型应该与variablename的数据类型兼容)5.2 条件语句: 共有if语句和 choose case 语句 两类条件语句。If语句计算一个逻辑表达式,然后根据表达式的值是真还是假决定下一步执行的语句块。 Choose case 语句可同时处理多种情况。(1)if 语句,if语句有两种形式。一单行 ifthen 语句,格式为:If
13、 cond then action1 else action2其中cond 是个表达条件的逻辑表达式;action1,action2 是一条语句;大括号表示该部分可以根据需要选择。(2) choose case 语句5.3循环语句:powerscript 的循环语句有3种形式:doloop , fornext, 和 goto。如果合理的将前两种形式与exit 和 continue语句配合使用,完全可以抛弃goto 语句。而且 do loop 结构本身又有4中形式,丰富多彩的表达方式为我们编写清晰流畅的程序提供了有效的手段。(1)do loop 循环语句,4种形式:* Do until cond
14、ition loop* do while condition loop *do .loop until condition *do loop while condition其中do标示循环的开始;loop 表示循环的结束;condition表示循环条件,是个逻辑表达式,其值为true或false。( 2 )fornext :fornext是个循环次数确定的循环结构,她使循环体内的语句执行规定的次数,语法结构为: for varname = start to end step increment statementblock next其中varname是循环变量,可以使是任意的数字类型;star
15、t end 分别是循环变量的初值和终值;increment是每次循环后循环变量的步长增量(默认值为1);statementblock 是一组语句,成为循环语体,大括号表示此语句可以省略。其循环过程为: 虚幻变量varname 从start 开始,到end 为止,重复执行循环体,每执行一次,varname+increment。另外 ,如果start 和end 在循环体内被修改,将影响循环次数。(3) goto 语句goto语句将控制跳转到程序中的其他位置,用goto语句也可以构成循环。其语法格式为:goto label 其中label是语句标号,它使用标识符的命令规则。(4) exit (退出循
16、环)语句在doloop和for.next语句的循环体中,当我们想在中途退出循环时,可以使用exit语句,执行该语句后,程序的控制权转至循环语句后的语句。(5) continue(继续循环)语句在循环体中,遇到continue语句后,将不执行continue语句后与循环结束前的所有语句,而是开始新一轮循环。常用事件Open 事件:打开窗口时触发Close 事件:关闭窗口时触发。Closequery 事件:在开始关闭窗口时触发。Dragdrop 事件:当在窗口客户区 释放拖动对象时发生。Resize 事件:当窗口大小发生变化时产生,窗口被打开时也产生该事件。常用函数Powerbuilder 窗口对
17、象比较常用的函数如下:1.ArrangeSheets() 功能:按指定方式排列mdi框架窗口中的工作窗口(子窗口)或图标。语法:mdiframe.arrangesheets(arrangetype)2. getactivesheet()功能:得到指定mdi框架窗口中当前活动工作表。语法:mdiframewindow.getactivesheet()3.getparent功能:返回父窗口的名称语法: windowname.Getparent()4.hide()功能:隐藏窗口语法: windowname.hide()5.print功能:打印窗口语法:windowname.print()6.setf
18、ocus()功能:将焦点设置在该窗口上。语法:windowname.setfocus()7.show()功能:显示窗口语法:windowname.show()与窗口相关的函数1.Open()功能:打开窗口。该函数有两种语法格式:格式一:打开编程时已知数据类型的窗口对象。格式二:打开程序运行后才能确定数据类型的窗口对象。语法一:Open(windowvar,parent)语法二:Open(windowvar,windowtype,parent)2 Openwithparm()功能:带参数打开窗口,与Open()函数相似。区别在于 openwithparm()函数可以向打开的窗口对象传递参数。语法
19、一:openwithparm(windowvar,parameter,parent)二openwithparm(windowvar,parameter,windowtype,parent)3 opensheet()功能:在mdi框架窗口中打开mdi子窗口,并在指定菜单中创建该子窗口的相关菜单项。语法:4 opensheetwithparm()功能:在Mdi框架窗口中带参数打开mdi子窗口。与opensheet()函数相似。区别在于opensheetwithparm()函数可以向打开的窗口对象传递参数。语法:5 close()功能:关闭窗口并释放窗口以及窗口上的控件所占据的内存。语法: Clos
20、e(windowname)6 CloseWithReturn()功能:关闭窗口,与close()函数相似。区别在于closewithreturn()函数在关闭窗口时将返回值保存在message对象中。PB中实例化(用isvalid判断)的作用是什么?比如:if not isvalid(myo_apprun) thenmyo_apprun = create my_apprunend if如果不写它会有什么后果?不写可能会报错,使用isvalid来判断对象是否成功被创建,如果未被成功创建就去使用的话会抛出异常,程序不能正常运行。Upper()编辑Upper()功能将字符串中的小写字母转换为大写字母
21、。语法Upper( string )参数string:要将其中的小写字母转换为大写字母的字符串返回值String。函数执行成功时返回将小写字母转换为大写字母后的字符串,发生错误时返回空字符串()。如果string参数的值为NULL,Upper()函数返回NULL。eg:select upper(AaCdD) from dual;UPPER(AACDD)message.stringparm的用法 比如openwithparm(w_1,abc)在w_1的open事件里就可以通过message.stringparm取得abc的值string ls_stringls_string = message.
22、stringparm /ls_string的值即为abc在窗口调用的时候openwithparm(window_name,trans_string)在窗口打开的时候(open event),ls_string = message.stringparmOpenWithParm()功能带参数打开窗口,与打开窗口的Open()函数相似。Trim()删除字符串首尾的空白(可以首尾一起,也可以指定首或尾,取决于控制参数),但会保留字符串内部作为词与词之间分隔的空格。=html5,c#,powerbuilder,mysql,oracle经典学习视频和文档资料,本人多年收集的学习资料,里面主要包含:“htm
23、l5,c#,powerbuilder,mysql, oracle”需要加qq: 4 1 7 1 2 9 3 6 7 =第二部分:Pb的5个可编程对象概述:Application对象:程序执行的起点,全局编程Window对象和控件:用户界面主要构成对象Menu对象:调度中心。Userobject对象:重用。封装。Function对象:重用和编程关系紧密的内容:界面设计:常规设计,标准设计函数:600多个函数,常用70多个事件:常用事件,理解触发事件至关重要属性:常用属性Sql语言:数据处理的基础。PB的编程语言:POWerScript嵌入式sql程序和时间的关系:Pb中所有程序的执行都必须通过事
24、件编程的规范性:能编程序不重要,重要的是编写规范的程序实现功能是基本要求,维护要求规范显示编译: ctrl + L 快捷键 快速替换: ctrl+H 标识符:定义:所有程序员自己定义的名称字母或者下划线开头长度=255不区分大小写不能是保留字:比如 this 等关键词就不能指代词:This:代表当前窗口 parent:所编程对象的容器控件Parentwindow:当前菜单所在的窗口。 Super:子对象引用父对象会用到。数据类型:1:保准数据类型:字符型: string char数值型:注意各类型的取值范围,和数据库的同类型的数据精度是否匹配。类型有: integer(最大值65536) lo
25、ng double real decimal unsignedinteger unsignedlong 日期,时间型:date time datetime 布尔型:boolean Blob型:blob2:系统对象类型: create(创建) destroy(释放内存) browser3:枚举型:4:Any型:运行慢,编译时不做类型检查。第一章语言基础变量声明:作用范围:全局变量:整个target下所有对象都可访问实例变量:window application menu userobject 范围内的变量本地变量:申明变量的事件或者函数内变量声明:注意声明时赋值的特例格式:数据类型,变量名称=初
26、值位置:代码的开头规范:作用范围+类型_变量名称 例子:string ls_ss time lt_study类型转换:20160712 第三天:运算符和表达式:算术运算符:+,-,-,*,/,关系运算符:=,=,90Messagebox(提示,优秀)Case is ls_ls60Messagebox(提示,及格)Case is ls_ls60Messagebox(提示,不及格)End Choose 关于取值:一个值,多个值列表,x to y, is 表达式,上述各种组合。注意:case 判断的顺序性 (由少范围到多范围)。循环语句:格式1:do while 条件语句模块Loop格式2:Do语句
27、模块Loop while 条件格式3:Do until 条件语句模块Loop格式4:Do语句模块Loop until 条件注意:掌握其中一个就行 (通用掌握第一个)循环语句2:格式1:For 变量=初值 to 终值语句模块Next格式2:For 变量=初值 to 终值 step 步长语句模块NextSplit 功能的实现学习函数:1:函数的作用2:函数的语法3:参数的含义4:返回值的含义5:常用编程Pos函数:作用:查找一个字符串在另一个字符串中首次出现的位置(起始位置是1),语法:1:pos(str1,str2)2:pos(str1,str2,start)返回值: integer,从str1
28、开始的位置,0表示没找到。: 从start位置开始找str2在str1第一次出现的值。Left函数:作用:得到指定字符串左侧若干个字符语法:left(str1,len)返回值:string, 字符串Right函数作用:得到指定字符串右侧若干个字符语法:right(str1,len)返回值:string, 字符串Mid函数:作用:得到指定字符串指定位置的一个子串语法:mid(str1,start,len) :从start开始取len个长度。返回值:string, 字符串Len函数:作用:得到字符串的长度语法:len(str):str 代表你要判断的字符串返回值:长度Asc 函数作用:得到对应的a
29、scii语法:asc(char)返回值:数字,对应的asciiChar 函数:作用:得到和asxii对应的字符语法:char(ascii)返回值:string Fill函数:作用:反复填充得到指定长度的字符串语法:fill (str,len)返回值:string举例:fill(english,6) 返回englis Fill(english,9) 返回englishenreplace函数:作用:替换语法:replace(str1,start,len,str2)返回值:string举例:replace (english1,5ch):返回:chsh 解释:相当于吧engli 替换成了ch显示格式:
30、t:表示一个制表位 新建一个tab Rn:回车n:空格例子:string ls_sls_s=a t b rn c t d那么打印出来显示的格式就是:a bc dmod函数作用:求余语法:mod(n,m)返回值: integer ,余数举例:mod(5,3)返回2,mod(4,2)返回0string 函数:语法: string( var ,format)Var: 可以是 date , time datatime 类型的数据。Format: 是格式串, 比如: yyyy-mm-dd hh:mm:ss yy年mm月dd日continue : 结束本次循环exit:结束循环体return: 结束ret
31、urn以下所有代码halt 和halt close :马上结束整个应用,halt close 在结束之前还执行application的close事件。上机:全角半角混杂内容的统一转换思路:穷举,对应替换012345678定制事件:系统事件:对象上已经提供的所有事件缺省事件:初次打开时默认的事件自定义事件:有消息映射的 格式:ue_事件名指定制事件:无消息映射的,通过postEvent(稍后触发) 或者TriggerEvent(马上触发)函数触发。语法: this.postevent(事件名)事务:若干个操作的集合,作为一个整体要么都成功,要么都失败。缺省的全局事务对象是SqlCA, PB所有和
32、数据库打交道的操作都要通过事务对象来完成。Connect:连接数据库配送关于游标:可以使用sql返回多条数据,并逐条处理使用步骤:1:声明游标 2:打开游标 3:读取第一条数据 4:do while循环 逐条处理数据 读取下一条数据 Loop 5.关闭游标。-函数的定义: string gf_add(integer ai_add1 ,integer ai_add2)函数的作用:做加法运算参数解释:ai_add1 被加数 ,ai_add2 加数返回值:integer类型, 两数相加后的和调用举例:li_temp = gf_add(10 , 45)编写日期:编写人 :改动情况-Windoe对象:;
33、公用属性Visible:是否可见Enabled:是否可用X:控件左上角在横向的位置Y:控件左上角在纵向的位置Width: 控件的宽度Height:控件高度*字体相关注意:上述为可视对象的公用属性,Window对象:常用属性Title:窗口的标题文字Menuname:窗口顶部菜单,mdi 必需的。Windowstate:窗口打开时的初始状态Windowtype:窗口类型:Main:整个应用中只有一个,主窗口,可以独立存在Child:不可独立存在的,显示范围限于主窗口Popup:显示范围不局限于主窗口。不可独立存在Response:资源独占式的窗口。(必须结束该窗口才能操作其他的,用于重要的提示信
34、息)MDI 一个没有microhelp状态栏框架。 mdihelp 一个microhelp状态栏MDI框架。 注意:是MDI 或者mdihelp 窗口类型时,会有一个隐藏的mdi_1的控件!ControlMenu:是否有控制菜单Maxbox:是否有右上角的最大化Minbox:是否有右上角的最小化Titlebar:窗口的标题栏Window对象: 常用事件1 Open 事件:*触发时机:窗口打开时出发,界面尚未显示出来。*常用编程:初始化工作*忌用编程:耗时的程序不要在此编写* 思考:如何在窗口打开时编写耗时的程序。自定义事件:*复习自定义事件*解决Open事件中不能编写耗时的程序。*事件的触发:
35、 postEvent 和triggerEvent POSTEVENT()是在其所在事件结束后执行,而TRIGGEREVENT()则是立即执行所调用的事件。取名规则:ue_?语法:this.postevent(事件名)函数的取名规则:gf_?。Close事件:l 触发时机:窗口关闭时触发,界面已经消失。l 常用编程:释放对象型变量,保存工作环境。CloseQuery事件:*触发时机:窗口关闭之前触发*常用编程:关闭确认*忌用编程:耗时的程序不要在此编写。*返回值:0-允许关闭, 1-不允许关闭Resize事件:*触发时机:窗口大小改变时。*常用编程:动态调整窗口中控件的布局。*事件参数:NewW
36、idth , NewHeight*编程要点:坐标起点,主控体,逐个参照编写。*补充: 能够适应不同分辨率的整体解决方案。Timer 事件:*Timer(integer N) N-间隔的秒数 N=0表示不再触发timer事件。*触发时机:每隔指定的秒数后自动触发*timer 函数:设定间隔时间。* 常用编程:处理周期性事件*编程注意:执行用时不能接近间隔时间,更不能大于间隔时间。OpenWithparm(函数) 打开时传递信息语法:OpenWithparm(打开的窗口的名称 , 要传递的信息)Closewithreturn (函数) 关闭时传递信息语法:Closewithreturn (关闭窗口
37、的名称 , 信息)Message: 全局缺省的消息对象。Tab_1.selecttab(index) 切换到指定的tabpag上。Idle 函数Idle(n ) : 设置空闲若干秒后触发的idle事件Finditem() 函数Handle=Tv_1.finditem(navigationcode , handle)第一个参数:枚举类型下一个节点: Nexttreeltem! 父节点: parenttreeitem! 子节点: childtreeltem 根节点:rootTreeItemInsertItemLast() 函数语法1:treeviewname.InsertItemLast ( ha
38、ndleparent, label, pictureindex )语法2:treeviewname.InsertItemLast ( handleparent, item )Item: treeviewitem类型的变量。常用变量有:data label pictureindex selectedpictureindexGetitem() 函数语法:treeviewname.GetItem ( itemhandle, item):得到指定节点的数据。Item: treeviewitem类型的变量。listbox:控件用途:显示一列数据的清单常用属性:sorted ,items 常用事件:eve
39、nt selectionchanged( /*integer index */)常用函数: dirlist ,reset, totalitems,text.additem一:lb_1.dirlist (要获取文件的路径,type) type:数字,查帮助 作用: 将指定目录中的文件清单放到lb_1中。二:lb_1.reset() 作用:清除掉lb_1中的所有数据。三: lb_1.totaliteme() 作用:计算lb_1中有多少项。四:lb_1.text(index) 作用:获取第index项的文字内容。五:lb_1.additem(text) 作用:增加一个项目,内容是text里面的内容。
40、getfolder(title, dir)title: 对话框标题dir: 缺省目录,保存返回目录作用:返回用户选择的目录返回值:1 -选择了目录。 2-取消Pb支持的图片文件:Bmp gif jpg wmf RLEGetCurrentDirectory():获取当前路径.Setprofilesgtring( string file, string section ,string key,string value)函数作用:写配置文件返回1 或者 -1,1表示成功,-1表示失败。例:setprofilestring( gs_path +sttup.ini , db ,dbms, ls_temp)Setprofilestring(路径,文件名,节,点,内容)Profilestring( string file, string section ,string key,string default)函数作用:读取配置文件返回读取到的内容。如果无法读取,则返回default.=