PB基础知识培训文档
- 格式:doc
- 大小:2.48 MB
- 文档页数:31
目录目录 (1)PB简介 (2)PB基础语法 (2)标示符 (2)注释 (2)代词 (3)数据类型 (3)变量 (3)运算符 (4)控制结构 (5)条件语句 (5)循环结构 (6)跳转语句 (6)返回和终止 (7)PB创建应用程序 (7)Pb的常用对象 (8)窗口 - Window (8)命令按钮 (9)静态文本 (10)可编辑类 (10)显示及控制类 (11)下拉列表框 (11)列表类 (12)视图类 (12)其他 (13)菜单 - Menu (13)Datawindow (14)PB编译客户端程序 (14)Pb连接数据库 (18)Pb查看程序源码 (23)Pb跟踪程序 (28)PB简介PB是PowerBuilder的简写,由Sybase公司出品,最早是由PowerSoft公司开发并发布销售的,并出品了到PowerBuilder5.0为止的各个版本,初期在广大开发人员中反映并不强烈。
到1995年左右,由Sybase收购PowerSoft公司开始并成功推出了PowerBuilder 6.0版本,由此开始,由于它的易用性、数据窗专利技术、对各种流行RDBMS的广泛支持、独特的开发方法及理念、独特的对象编程技术等等,成为现在为止可能是世界上用于数据库前端开发的最快捷、最方便、最强大的工具,一般而言,对一个小型的系统,在充分分析好的前提下,熟悉的程序员可以在一周以内完成一个独立的系统。
这对于其他数据库系统前端开发工具,如VB,Delphi,VFP,ORACLE Develop2000等等,如果你用过这些工具,简直无法想象。
虽然现在流行的开发工具并不是PB,因为现在到处都是B2B,B2C,PB在这方面能够实现,但比较其它专门工具而言,并不具有非常大的优势,而且实现的技术比较而言相对复杂。
但对于S/C结构的数据库应用及Intrnet而言,PowerBuilder仍然是非常好的选择。
PB基础语法下面就从PB最基本的语法,并结合公司的使用pb的情况,对PB做介绍。
标示符标示符是程序中用来代表变量、标号、函数、窗口、菜单、控件和对象等名称的符号。
标示符的命名规则:⏹必须是以字母或下划线开头⏹可以是字母、数字及一些特殊符号(-、_、$、#、%)组成◆不能使用PowerScript保留字◆不区分大小写◆最长不能超多40个字符,中间不能有空格注释⏹双斜线注释,用于为单行语句加注释,可以独占一行,也可以跟在可执行语句后面⏹斜线-星号注释,用于大段注释代词⏹Parent:只包含当前对象的对象,可以在窗口的控件、自定义用户对象、菜单等脚本程序中使用该代词。
⏹This:指具有当前脚本的对象,如窗口、用户对象、菜单⏹Super:在编写后代控件或对象的脚本时,可以调用祖先脚本。
脚本程序中既可以直接利用祖先对象的名称调用,也可以使用super代词来引用数据类型⏹系统对象数据类型:在PB中,可以操纵各类对象,如窗口、菜单、命令按钮等,可以将这些对象定义为系统对象数据类型。
如:Window mywin变量变量在使用前,必须对其数据类型和名称进行说明。
一个变量的类型可以是标准数据类型、结构和对象。
变量种类:全局变量、实例变量、局部变量、共享变量。
不同种类的变量有不同的作用和用途。
⏹全局变量:全局变量是在整个应用的任何地方都可以访问的变量,它的作用域是整个应用程序(地纬开发规范全局变量以g_开头)。
⏹实例变量:实例变量是某个特定类的实例化,可以在应用对象、窗口对象、用户对象或菜单对象中定义,并在定义的使用范围内使用(地纬开发规范全局变量以i_开头)。
⏹局部变量:局部变量是在相应的代码段定义和使用的临时变量,一旦代码段执行结束,相应的变量就不复存在(地纬开发规范全局变量以v开头)。
⏹共享变量:共享变量类似于实例变量。
它属于一个对象,但是可以在这个对象的所有的实例中使用⏹说明:如果不同范围的变量,使用了相同的名字,PB按照局部变量-共享变量-全局变量-实例变量的顺序来搜索变量⏹用户可以定义任何标准类型的、任何作用域的常量运算符如 string va,vbVa=’happy ’,vb=’new year’Va+vb=” happy new year”控制结构条件语句if语句1.if … then结构if <表达式> 关系符 <表达式> then语句块end ifif<表达式> 关系符 <表达式> then 单行语句2.if... then … else 结构if <表达式> 关系符 <表达式> then语句块1else语句块2end if3.if … then…elseif…else…endif 结构if <表达式> 关系符 <表达式> then语句块1elseif <表达式> 关系符 <表达式> then语句块2elseif <表达式> 关系符 <表达式> then语句块3else语句块4EndifChoose…case分支结构choose case 测试的表达式case 表达式语句块{case 表达式语句块…case 表达式}{case else语句块}end choose循环结构for …next语句for 变量名=初值 to 终值[step 步长]语句块NextDo循环⏹Do Until 条件语句块loop⏹Do While 条件语句块loop⏹Do语句块loop Until 条件⏹Do语句块loop While 条件跳转语句continue在循环体中,如果遇到continue语句,将不执行continue语句后和循环结束之前的语句,而开始新一轮循环。
Exit跳出循环,在嵌套循环中,只能跳出一层循环。
返回和终止Return语句:用于返回调用程序Halt语句:终止应用程序halt[close]PB的安装PB创建应用程序创建步骤:1、创建workspace: Menu—>File—>New—>Workplace一个workplace可以有多个Application.2、Menu->File->New->Application(菜单-文件->新建->开始向导->Application)3、选择应用名称和存放的库文件一个应用就建立完毕。
实际上这个应用没有任何脚本、窗口,也没有处理任何事情。
应用建立完毕后,PB自动建立了一个PBL文件(PowerBuilder Library),并在这个PBL文件中创建了一个Application entry(应用条目)一般,一个应用都有一个主窗口,由这个窗口负责和用户的交互过程,而在应用的open事件的脚本中处理的就是如何打开这个窗口,如何和数据库建立连接,如何初始化一些全局变量,关闭应用时(Close事件)做如何处理等等。
如:Open事件:…….connect using sqlca;open(w_main_frame)Close事件:disconnect using sqlca;destroy xxxx就是在譬如,建立应用名为pb_lesson,存放库名为lesson.pbl,则在lesson.pbl 中就存在了一个pb_lesson的条目,当然,可以在其他pbl中创建一个新的applicationApplication的常用事件Open当一个应用执行时,即触发此事件,实际上就是程序的入口,一般处理一些公用变量,公用对象,连接数据库,打开主窗口等操作一个系统的入口就是Application的Open事件,但是一般在这个事件中打开某窗口,如Open(w_frame).主要的事务就由w_frame来处理了。
此时Application仍继续运行着并监控着W_frame的状态,一旦W_frame结束,就触发Close事件Close当主窗口关闭后触发此事件,如果没有打开任何窗口,则在Open事件后直接触发此事件,一般在这个事件中断开连接,清除变量等操作;Pb的常用对象窗口- Window窗口(Window)是程序和用户进行交互的主要界面,类似于VB或Delphi的Form(窗体),在窗口上可以布置各种不同类型的控件以满足程序的要求,各控件间相互协作,完成预定功能。
一个窗口可以只被打开一次或者作为一个实例变量而被创建(实例化)然后打开多次。
任何窗口的最底层基类都是windows,可以逐级继承,对于节省代码开支,界面一致性等非常有好处。
数据窗作为标准控件可以直接嵌入到窗口中使用。
创建:创建一个窗口有2种方式:⏹新建:从菜单中选择“文件->新建”,弹出新建向导,选择“对象-Windows”,系统就自动创建一个标题为 Untitled 的空窗口,没有任何脚本,但可以被打开。
⏹继承:菜单中选择“继承”,弹出可被继承的祖先清单,选择一个,系统自动从该祖先窗口继承,新窗口拥有祖先窗口的所有特性及脚本,并可以重载及覆盖这些属性或脚本。
创建并修改完成,按Ctrl+S或文件->保存,输入窗口名称并制定放在那个PBL中,该窗口就可以被调用了。
注意点:基于继承的窗口,一旦祖先的属性修改,则该窗口中没有被重载或覆盖的部分即自动修改,实际上该窗口分为2部分:祖先和自己。
窗口常用事件:事件是描述一个窗口或窗口中控件的行为的语法,只有在满足特定的条件时才会触发该事件,一般一个事件反映了某种条件下的某一动作。
也可以手工方式使系窗口函数一般用来控制窗口的行为,取得窗口信息,控制窗口的行为,触发特定事件等等命令按钮类型:Commandbutton,PictureCommandButton 最常用属性:default : True时,当在窗口中的任意控件上按下回车键,就会触发它的clicked事件,同时边框加深;cancel : True时,当在窗口中的任意控件上按下Escape,就会触发它的clicked事件;text :现实的文本,如“确定(&O)” 就是这样的:PictureCommandButton中PictureName,DisabledPictureName指定有效,失效时的图片,但因为不支持透明,故用的比较少。
Htextalign,VtextAlign:制定水平,垂直方向的文本对齐方式事件:clicked:最主要事件,在用户按下并抬起鼠标后触发。
其他事件:rbuttondown,dragdrop,dragenter,dragwithin,dragleave,getfocus,lostfocu s等等极少用,一般都在clicked事件中写脚本。
函数:setfocus() :取得焦点,一般在别的控件中调用,如cb_xxx.post setfocus()classname():取得名称,如 cb_test.classname() 就返回“cb_test”hide(),show(),resize(),move()等较少用到。