




免费预览已结束,剩余81页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PowerBuilder程序设计与系统开发,PowerBuilder程序设计与系统开发,内容介绍大纲进度考试方法第一章、PowerBuilder基本原理第二章、基本知识(C/S,数据库)第三章、对象及控件的基本属性及方法;第四章、数据窗控件(Datawindow)的特性及方法;第五章、基本应用(Application)的建立;第六章、PFC(PowerbuilderFounderClass)技术原理及实现。第七章、与数据库系统集成进行开发基本技术及方法;第八章、高级编程技术,内容简介,关于PB(AboutPowerBuilder).使用场合(Where)?谁需要(Who)?工与数据库交互原理(How)?学习内容(课程内容)(What)?,关于PowerBuilder,PowerBuilder最早是由PowerSoft公司开发并发布销售的,并出品了到PowerBuilder5.0为止的各个版本,初期在广大开发人员中反映并不强烈,到1995年左右,由Sybase收购PowerSoft公司开始并成功推出了PowerBuilder6.0版本,由此开始,由于它的易用性、数据窗专利技术、对各种流行RDBMS的广泛支持、独特的开发方法及理念、独特的对象编程技术等等,成为现在为止可能是世界上用于数据库前端开发的最快捷、最方便、最强大的工具,一般而言,对一个小型的系统,在充分分析好的前提下,熟悉的程序员可以在一周以内完成一个独立的系统。这对于其他数据库系统前端开发工具,如VB,Delphi,VFP,ORACLEDevelop2000等等,如果你用过这些工具,简直无法想象。虽然现在流行的开发工具并不是PB,因为现在到处都是B2B,B2C,PB在这方面能够实现,但比较其它专门工具而言,并不具有非常大的优势,而且实现的技术比较而言相对复杂。但对于S/C结构的数据库应用及Intrnet而言,PowerBuilder仍然是非常好的选择。,PowerBuilder的发展史,1974年Kertzman创建ComputerSolutions公司,1987年改名为PowerSoft,1991年6月发布PowerBuilder1.0,1995年8月Sybase与Powersoft公司合并,1996年发布PowerBuilder5.0,2003年发布PowerBuilder9.0,1984年MarkHoffman和BobEpstein共同创立Sybase,PowerBuilder应用场合,1、大型数据库系统C/S模式前端开发工具或B/S模式应用服务器开发工具,一般应用于需要大型或中型数据库系统支持(如ORACLE,Sybase,MSSQLServer,DB2,Informix)作为后台数据支撑平台的管理类系统,一般可以承受千万级纪录量的系统,如:MRPII系统物料资源计划ERP系统企业资源计划CRMCustomerRelationManagement(客户关系管理)CallCenter呼叫中心(Haier)2、中、小型数据库系统开发,一般数据量为10万左右,支持并发或仅单机用户,如中、小型企业的内部信息管理、各种小型软件、共享软件等;3、与Sybase的PowerDynamo,JaguarCTS,PowerSite等集成,建立电子商务应用服务支撑平台;4、与PHP,Java,ASP集成,作为Intranet或Internet的后台数据库系统维护工具,如异种平台(Unix,Linux,Solaris,NT)上的ORACLE,MySQL,DB2等的Client方式维护。,谁需要PowerBuilder,PB可以做的事情很多,因此也就成为现在各软件公司进行系统开发的一种常用工具,如果你将从事下列工作或有这些需求,则最好了解或通晓PB:1、数据库系统前端开发中的程序设计;2、开发咨询或技术支撑;3、数据库系统分析及设计;4、需要掌握VB,Delphi,Developer2000以外的其他工具;5、了解Internet网站建设中可以保护现有PB资源的开发方式;注意:PB与数据库系统是不可分离的,因此,你只有对DBMS有基本的理解才可能用好PB,精通当然最好。如果你不知道DBMS是什么东西,请先学习相关内容,南京大学是非常好的入门教材,各流行数据库系统的基本概念都涵盖了。,PB与数据库交互原理简介,PowerBuilder的吸引人的地方也就是它的数据窗技术,描述为:1、前端(Client)建立独立的Transaction(缓冲区,事务对象),用于响应用户请求及返回执行结果;2、任何事务都必须在某Transaction中执行,默认为SQLCA(SQLConnectionArea),如select*fromtable_xxxusingsqlca;Dw_xxx.settransobject(sqlca);3、数据窗通过Transaction提取数据、编辑数据、再根据需要回写数据,并保证在同一事务内,这样就完成了日常的数据的维护、更新等操作。4、数据窗现在已经作为标准的ActivX可编程对象,可以嵌入到其他程序中使用,但总是在PB中最方便,具有专利技术的数据窗集成了数据编辑的几乎所有的常用算法、操作方式等等,非常方便。5、实际应用中,通过众多的数据窗和其它标准Windows控件协调运行,就完成了最基本的功能。实际上远远不止这些,大纲进度(课程内容),学分:2+1(多媒体教室授课2,上机1)内容:PowerBuilder基本原理;PB基本知识(对象、函数、事件、变量、脚本、继承);对象及控件的基本属性及方法;数据窗控件(Datawindow)的特性及方法;基本应用(Application)的建立;与数据库系统集成进行开发基本技术及方法;PFC(PowerbuilderFounderClass)技术基本原理;自己动手做东西。,PowerBuilder基本原理,编程原理开发界面库(Library)管理基本对象及控件运行方式,PowerBuilder运行原理,开发支持库Pblib.dllPbcmp.dllPbudo.dllPbrtc.dll,开发(PBLs),编译(Pcode,Mcode),应用(Application:DLL,Exe,PBD),BugFixing,运行支持库PBvm70.dllPBdwe70.dllLibjcc.dllPbo8470.dllPbrtc.dllYouOcx.OCXYouLIb.DLL,DBMS,发布(InstallShield),PowerBuilder基本原理-开发界面,脚本,预览,菜单,工具条,对象属性面板,函数及事件,状态条,PowerBuilder基本原理-开发界面,说明:1、PB开发为标准的MDI方式,即对应不同的开发对象,有它不同的菜单及工具条,对应不同的功能;2、可以创建的对象包括4大类:对象(窗口、函数、结构、菜单)数据窗对象(Grid,FreeForm,Tabular,Label,N-Up)数据库(DatabaseProfile,Query,Pipeline)工程(Application,ProxyLibrary,COMCTS,OLE2,JavaProxy)3、常用工具Library,Editor,ClassviewBrowser,DBProfileEditor,Debugger,DWSyntax等,数据库基本知识-1,一、C/S模式图示,DBServers,TCP/IP,发送SQL语句到数据库服务器,返回SQL语句查询结果到客户机,WinNT,Linux,Unix,MicrosoftSQLServerORACLESybase,DB2,Informix,Clients,Servers,Clients,Clients,1、客户端运行自己的程序,向服务器发送SQL请求及取回结果。2、服务器侦听网络,响应请求并返回处理结果。,物理设备,数据库基本知识-2,二、数据库系统基本组成,DBMS,Applications(应用),网络,协议介质,接口,DBTools(管理工具),存储管理数据库管理数据库中的对象管理1.表单2.视图3.触发器4.索引5.存储过程4.函数、包,数据库基本知识-3,表单(Table):由属性和记录构成的二维关系表;视图(View):基于单表或多表的查询;存储过程(Storeprocedure):存储于数据库服务器上的一系列操作的合集,由服务器执行,可以增强可管理性和运行效率;触发器(Triggers):当对表的某种操作发生时,就引发其他的一些逻辑处理;索引(Index):服务于快速查询,寄生于表的一种服务;函数,包(function,package):类似于存储过程;数据库(database):上述各对象的集合;设备(device,tablespace,datafile):存放数据库的物理定义;日志(log):记录对数据库的任何操作,用于备份和恢复;用户(User):可以使用数据库中具体内容的人员定义;角色(Role):给同一用户赋予不同的角色,享有不同的权限;权限(Privilege):赋予用户操作数据的权限;,三、关系数据库系统基本概念,数据库基本知识-4,Sybase随PB发行的AdaptiveServerAnywhere(ASA)6.0是短小精悍的个人数据库系统,支持了大多数的关系数据库操作。如日志、事务、用户、触发器,并提供管理中心(Sybasecentral)来管理数据库的内容,在PB中,一个小型的数据库应用用ASA作为后台数据库已经完全可以胜任。本课程的后台数据库将主要放在ASA。SybaseCentral实际上是以插件方式运行的,他可以管理Sybase产品中的大多数,如SybaseEnterprise(SYE)数据库,JugarCTSPowerDynamo,等等.提供了统一的界面。当然也可以通过SQL语句来管理数据库。包括建表、索引、存储过程、触发器,数据更新,授权等等都可以通过SQL语句来执行。下面将通过演示来讲解关于SybaseCentral的使用,特别是如何建库,建表等操作。,四、ASA中的数据库管理,应用-Applicaiton,如何建立应用(Application)事件及脚本(EventsandScripts)连接(Transaction)入口(StartPointer),应用-1.建立,1、Menu-File-New-Application(菜单-文件-新建-开始向导-Application)2、选择应用名称和存放的库文件一个应用就建立完毕。实际上这个应用没有任何脚本、窗口,也没有处理任何事情。应用建立完毕后,PB自动建立了一个PBL文件(PowerBuilderLibrary),并在这个PBL文件中创建了一个Applicationentry(应用条目)一般,一个应用都有一个主窗口,由这个窗口负责和用户的交互过程,而在应用的open事件的脚本中处理的就是如何打开这个窗口,如何和数据库建立连接,如何初始化一些全局变量,关闭应用时(Close事件)做如何处理等等。如:Open事件:.connectusingsqlca;open(w_main_frame)Close事件:disconnectusingsqlca;destroyxxxx就是在譬如,建立应用名为pb_lesson,存放库名为lesson.pbl,则在lesson.pbl中就存在了一个pb_lesson的条目,当然,可以在其他pbl中创建一个新的application.,应用-2.事件及用途(1),Application的事件Open当一个应用执行时,即触发此事件,实际上就是程序的入口,一般处理一些公用变量,公用对象,连接数据库,打开主窗口等操作;Close当主窗口关闭后触发此事件,如果没有打开任何窗口,则在Open事件后直接触发此事件,一般在这个事件中断开连接,清除变量等操作;Connectiongbegin当连接开始时触发此事件,由connect函数直接触发此事件Connectionend当连接结束后触发此事件,由disconnect函数触发Idleidle(xxxsecond)函数触发,既当系统处于等待状态指定秒数xxx后触发该事件,一般处理如关闭系统,提醒用户等Systemerror当程序运行发生任何系统错误时触发该事件,一般处理记录错误,提醒用户等操作。常用事件:open,close,systemerror,应用-2.事件及用途(2),脚本(scripts)编写基本知识一般依赖于某事件或函数,由事件或函数触发而执行,由换行或;表明一条语句的结束,如Connectusingsqlca;Open(w_main_frame)Disconnectusingsqlca;任何嵌入式SQL都必须用;来表明该语句的结束,如Selectstudent_nameinto:ls_namefromtable_1wherecol_1=hello;大小写不敏感,如ls_name和LS_Name表明同一个变量或对象可以在一行写多条语句,用;隔开。如ls_name=xxx;ls_name2=yyy;li_cnt=2;变量或对象的引用前必须声明,如stirngls_name=abc/初始值ls_name=LiujiangangMessagebox(Hello,MyNameis+ls_name)就是弹出一个消息框,并提示标题为Hello,内容为MyNameisLiujiangang的内容。并显示确认按钮用来接受用户响应。,应用-3.连接(1),一般地,在数据库前端开发中,都连接到某数据库服务器的某数据库,或者连接到本地的某数据库或ODBC源,而连接一般是在应用的Open事件中处理的,在Close事件中关闭此连接,连接实际上是Transaction对象,该对象有下列常用属性:DBMS:指定数据库管理系统的名称,如O84ORACLE8.0.4,ODBCServerName:指定数据库服务器名称,如EPCS_LOCAL,MSS_DB等Database:指定数据库服务器上的数据库,如MaterialDBUserID:指定数据库用户的ID号,如dboUserPassLogID:指定用于连接到数据库服务器的用户ID号,如connectorLogPassDBParm:附加的连接参数,如ApplicaitonName=“asdfadsf”等,随DBMS而变化AutoCommit:是否自动提交,如True,false以上这些参数对特定的DBMS不是都必需的,一般DBMS,ServerName,都必须指定。其他属性(该对象创建后才具备):SQLCode:最近SQL语句执行的PB结果码,0,-100,-1三个数值SQLDBCode:最近事务中SQL语句返回的数据库操作返回码;SQLErrtext:最近操作的错误信息;SQLNRows:最近操作返回的结果数据;一般,一个应用中已有默认的Transaction存在,即SQLCA,因此,在Application的OPEN事件中就可以指定它的具体属性用来连接数据库,如/Profilepb_classSQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=ConnectString=DSN=pb_class;UID=;PWD=;“,应用-3.连接(2),就指定了TransactionSQLCA的属性,然后就可以用数据库的四个方法中的Connect来处理如一个Application的常用的Open事件脚本为:SQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=ConnectString=DSN=pb_class;UID=;PWD=;“Connectusingsqlca;Ifsqlca.sqlcode=-1thenMessagebox(Error,canntConnecttoServer+sqlca.serverName,stopsign!)haltclose/终止并处理Application的Close事件EndifOpen(w_frame),应用-4.入口,一个系统的入口就是Application的Open事件,但是一般在这个事件中打开某窗口,如Open(w_frame)主要的事务就由w_frame来处理了。此时Application仍继续运行着并监控着W_frame的状态,一旦W_frame结束,就触发Close事件,窗口-Window,窗口概述1、窗口(Window)是程序和用户进行交互的主要界面,类似于VB或Delphi的Form(窗体),在窗口上可以布置各种不同类型的控件以满足程序的要求,各控件间相互协作,完成预定功能2、一个窗口可以只被打开一次或者作为一个实例变量而被创建(实例化)然后打开多次。3、任何窗口的最底层基类都是windows,可以逐级继承,对于节省代码开支,界面一致性等非常有好处。4、数据窗作为标准控件可以直接嵌入到窗口中使用。,窗口-1.创建,有2种方式创建一个窗口:1.新建:从菜单中选择“文件-新建”,弹出新建向导,选择“对象-Windows”,系统就自动创建一个标题为Untitled的空窗口,没有任何脚本,但可以被打开。2.继承:菜单中选择“继承”,弹出可被继承的祖先清单,选择一个,系统自动从该祖先窗口继承,新窗口拥有祖先窗口的所有特性及脚本,并可以重载及覆盖这些属性或脚本。创建并修改完成,按Ctrl+S或文件-保存,输入窗口名称并制定放在那个PBL中,该窗口就可以被调用了。注意点:基于继承的窗口,一旦祖先的属性修改,则该窗口中没有被重载或覆盖的部分即自动修改,实际上该窗口分为2部分:祖先和自己。,窗口-2窗口的基本属性,窗口的属性非常多(41个),仔细理解属性的具体用途及含义对用好窗口对象非常重要。常用属性:,窗口-3.窗口支持的控件.1,窗口共支持以下33种标准控件,窗口-3.窗口支持的控件.2,这些控件各自有自己的属性,事件及函数(Properties,Events,Functions),以后我们将穿插在各章节中提及。UserObject是一种特殊的对象(控件),它以CustomClass,StandClass,CustomVisible,ExternalVisual,StandVisual五种基本类为基类,拥有该基类的基本属性,同时在他们的基础上扩展属性,函数及事件,并直接作为一个可视化控件可以被window或实例化后使用。,窗口-4.窗口常用事件,事件是描述一个窗口或窗口中控件的行为的语法,只有在满足特定的条件时才会触发该事件,一般一个事件反映了某种条件下的某一动作。也可以手工方式使系统满足这些条件从而触发这些事件。,窗口-5.窗口常用函数,窗口函数一般用来控制窗口的行为,取得窗口信息,控制窗口的行为,触发特定事件等等,窗口-6.窗口控件操作(一),在界面设计中,往往用到非常多的控件放在同一窗口中,一般会有下列要求:1:对齐操作包括左、上、下、右,竖向、横向对齐等操作。以第一个选择的对象为基准2:大小操作包括宽度,高度:3:相对位置操作水平间距,竖向间距(三个以上对象选中时才有效)4:制表站(taborder)定义当运行时,用户按tab在各个控件上的移动顺序,一般以10进位如10,20,301405:公用属性及特有属性指定字体、文本对齐方式、前景色、背景色、边框等:,右对齐,水平中间对齐,向下对齐,向上对齐,左对齐,竖向中间对齐,等高,等宽,等高等宽,竖向等间距,横向等间距,文本色(前景色),背景色,边框,窗口-7.窗口控件操作(二),其他按钮功能:,保存,剪切对象或文本,复制对象或文本,粘贴对象或文本,撤销或重做上次的任意操作,打开当前选中对象的脚本,属性面板切换到当前选中对象,脚本工具按钮,全选,选中行及光标所在行标记为注释,选中行及光标所在行标记为非注释,查找和替换,编译当前脚本,粘贴各种语法或原型定义,置于最前端,置于最后端,窗口-8.窗口控件的公用属性,每个控件都有的属性共7个,这实际上是可视控件(Control)的最基本属性Name:在窗口中唯一标记该控件的有效字符串Enabled:使某控件失效或使能,失效后用户无法操作,但是可以手工触发它的事件Visible:可视与否ForegroundColor:前景色(按钮无效)BackgroundColor:背景色Tag:与系统无任何关系的一个公用属性,可以做任何事情Border:边框类型,枚举值,有些控件指定了也无效是无效的。位置:在父对象中的定位(如x,y,width,height,x1,y1,x2,y2等,但属性名称不一致)关于颜色的算法:长整型(long),rgb颜色系统颜色值=rgb(red,blue,green)=green*65536+blue*256+red如红色(255)=rgb(255,0,0)=0*65536+0*256+255可以从下拉工具条中直接选取常用颜色及系统颜色,窗口-9.窗口控件简介命令按钮,类型:Commandbuttom,PictureCommandButton最常用属性:default:True时,当在窗口中的任意控件上按下回车键,就会触发它的clicked事件,同时边框加深;cancel:True时,当在窗口中的任意控件上按下Escape,就会触发它的clicked事件;text:现实的文本,如“确定(/连接事务dw_control.retrieve()/检索数据.处理数据/更新数据ifdw_control.update(true,false)=1thencommitusingsqlca;/提交数据dw_control.resetupdate()elserollbackusingsqlca;/回滚最近的提交endif加载外部数据:importClipboard,importfile,importstring函数提供了获取外部数据的方式,Datawindow-5.数据维护,数据维护一个数据窗有三个缓冲区用来存放用户的数据:主缓冲区(Primary!):保存未被修改或删除或过滤出的数据;过滤缓冲区(Filted!):被过滤出的数据;删除缓冲区(Deleted!):被用户删除的数据PB通过这三个缓冲区保留用户所有对检索出来的数据的操作,然后统一处理为与数据库打交道的sql语法,如insert,delete,update,实际上就是完成最终的这三种操作。数据存取提取:GetItemDate,GetitemDateTime,GetItemDecimal,GetItemNumber,GetItemString,GetItemTime,GetText写入:SetItemdw_control.getitemString(20,emp_name)即得到Primary!缓冲区中第20行的emp_name列的值。setitem(20,emp_name,刘建刚)即设置Primary!缓冲区中第20行的emp_name为指定值。也可以用数据窗控件的对象属性来存取数据,如上述语法可以对应为:dw_control.object.emp_name20dw_control.object.emp_name20=刘建刚其他函数常用:Accepttext,DeleteRow,Filter,Getrow,InsertRow,Reset,RetrieveRowsCopy,RowsMove,RowsDiscard,RowCount,ModifiedCount,DeletedCount,FiltedCountScrollToRow,ScrollPriorPage,ScrollNextPage,ScrollFirstPage,ScrollLastPageSelectRow,GetItemStatus,SetItemStatus,SetFilter,SetSort,FindShareData,ShareDataOff,SaveAs,SaveAsAsciiUpdate,ResetUpdate,Datawindow-6.对象属性,数据窗口对象属性主要用来存储控制数据窗口行为的有关信息,这些信息不是数据窗口控件的属性,而是在数据窗口控件(容器)中存在的数据窗口对象的属性。利用Describe和Modify函数可以用来提取和修改数据窗口对象属性。如:dw_control.describe(emp_name.border)即取得emp_name的边框属性或dw_control.object.emp_name.border取出,返回:any类型dw_control.modify(emp_name.border=“2”)即将该边框设为0类型(无边框)PowerBuilder的数据窗对象(14个)提供了非常多,相当全面的属性描述,这些对象的有些属性可以修改,有些是只读的,如某数据列的编辑格式,一般制作完成后,在数据窗口控件中就不能再修改而只能取出他的具体编辑方式。理解这些属性并充分运用好这些属性,可以极大地扩展编程的灵活性和可扩展性,这也是数据窗对象学习的难点,一般难以在短时间内掌握,需要不断的磨练。,Datawindow-7.数据窗中的错误,二种类型(控件中存在)1、DBError事件,在数据窗控件retrieve,update时出错时触发,描述该数据窗对象连接的事务返回的具体信息,如update时报告一致性错误,列错误等等,连接错误,共享错误等等。2、ItemError事件:当某列编辑不符合检验规则(validation)时触发该事件,Datawindow-8.1数据窗应用示例,设计步骤:1.先通过DatawindowWinzard设计好数据窗对象,如d_my_first_grid2.新建或继承一个窗口,在窗口中加入一个数据窗控件dw_13.查看该控件的属性,调整dataobject属性,连接到刚才的数据窗对象,或在程序中指定他的属性,如:dw_1.dataobject=d_my_first_grid按“”弹出如下对话框,选择刚才设计的数据窗对象就可以了,Datawindow-8.2数据窗应用示例,使用步骤:1.创建事务对象,默认为SQLCA,可以自己定义一个全局事务变量;2.指定该事务对象的属性,连接到数据库;(一般在Application的Open事件中处理),如:/RollCall的连接定义SQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=ConnectString=DSN=RollCall;UID=;PWD=,PBCatalogOwner=dbaConnectusingsqlca;ifsqlca.sqlcode0then/显示错误,处理错误endif3.编辑某窗口,一般在这个窗口的Open事件中对数据窗控件设置事务信息,如Windows的Open事件中写入:dw_1.settransobject(sqlca)即表示将dw_1的数据操作和sqlca这个事务对象联系起来。,Datawindow-8.3数据窗应用示例,4.检索数据:dw_1.retrieve(参数1,参数2,.);5.对检索出来的数据(放在缓冲区中)进行编辑,通过直接编辑,Setitem,dw_1.object对象引用等操作,编辑数据;6.编辑完成,将该数据窗中的修改过的数据保存,是否修改由PB自己判断,可以通过dw_1.GetItemStatus函数得到每行、每列的修改状态用来作特殊的判断。一般的保存脚本如下:ifdw_1.update(true,false)=1thencommit;/提交事务/完整的语法应当是Commitusingsqlca;/对于默认事务sqlca,可以省略usingsqlca子句。dw_1.resetupdate()/复位修改状态为从未修改过elseRollBack;/回滚事务,并提示错误信息Messagebox(错误,保存数据时发生错误:rr+,Datawindow-8.4数据窗应用示例,对数据窗操作的常用脚本1.插入行dw_1.insertrow(2)/在第二行前插入一条新行2.追加行dw_1.insertrow(0)/在尾部追加一行3.删除行dw_1.Deleterow(2)/删除第二行4.过滤dw_1.setfilter(emp_namelike“刘%”)/凡是雇员姓刘的dw_1.filter()5.排需dw_1.setsort(emp_namea,emp_addressd)/按姓名正序,地址倒序排需dw_1.sort()6.查找ll_found_Row=dw_1.find(emp_namelike“刘%”,1,dw_1.rowcount()/在1dw_1.rowcount()范围内查找第一个满足条件的记录7.赋值dw_1.setitem(2,emp_name,测试)/设置第二行中emp_name的值为测试8.取值ls_emp_name=dw_1.GetItemSTring(2,emp_name)/取出第二行的emp_name值到ls_emp_name变量9.走动记录滚动到指定行:dw_1.scrolltorow(20)/滚动到第20行,一般和find一起操作相对滚动行:dw_1.scrollpriorrow(),scrollnextrow(),scrollNexPage(),scrollPriorPage()10.更新。Dw_1.update(true,false),PowerScript编程,PowerScript,任何程序的编制归根结底都需要由代码完成,虽然可视化编程为我们提供了极大的方便。但是如果没有完善的代码,程序就不可能有完善的功能。PowerScript是PowerBuilder的编程语言。我们在学习时可能已经发现,PowerScript语言与传统的Basic语言有很多相似之处。PowerScript是一种自由格式的语言,在编写程序代码时,编译器忽略它的空格、缩进、空行等,在这方面它又与C语言有几分相近。在本章中,我们将介绍PowerScrpit的数据类型,变量及作用范围,程序结构,以及一些常用函数和语句,尤其是一些和数据库有关的操作,将是本章内容的重点。,PowerScript-变量的类型和作用域,变量是指在程序运行过程中可以改变的量,变量在程序运行的过程中被赋值,在执行各种操作的时候,变量的值被不断传递,以实现程序员设定的各种操作。可以说,没有变量就没有程序可言,而灵活使用各种不同的变量将使程序设计更为简洁、高效、安全,条理性也会更强。在变量声明时只需注意四点,一是必须以字母开头;二是标识符不能使用保留字;三是标识符长度必须小于40;各字符之间不允许有空格。另外还要注意连字符,因为连字符容易和减号混淆。在Power-Builder中,所有变量都必须事先声明才能使用,而且类型固定,一旦声明之后就不能变化。变量的作用域是指某一变量的使用范围。早期的BASIC语言中,所有的变量都是全局变量,这样做有很大的危害,主要是因为过多的全局变量会引起程序的崩溃,同时也会限制为函数取名的个数。在PowerBuilder中,程序的变量分为四个层次,局部变量、实例变量、共享变量和全局变量,用户可以充分利用局部变量和实例变量以使程序变的简洁和高效,PowerScript数组及使用,数组是任何一种程序化语言都必须有的一种数据结构,与集合和枚举类型的数据结构不同,它是一系列有序数据的集合。数组中的每一个元素都属于相同的数据类型,并且每一个元素都有相同数组名和不同的数组下标。数组的类型有两种:一种是一维数组,另一种是多维数组。多维数组必须有一个固定的大小,而一维数组的下标可以是固定的,也可以是可变的。用户在声明一个数组时首先必须声明的是一个数组的类型,然后是数组名,数组下标。一维数组定义:stringls_my_array_1/不定长数组stringls_my_array_210/从ls_my_array1到ls_my_array10共10个单元stringls_my_array_35to24/从ls_my_array5到ls_my_array24共10个单元多维数组:stringls_my_2d_array1100,200/定义一个100*200的数组,共20000个单元stringls_my_2d_array21-100,-2to97/定义一个100*100的数组。数组及数组间的操作:上界及下界:UpperBound(ls_my_array_1),LowerBound(ls_my_array_3)数组是否一致=,数组变量类型可以是任意类型,包括窗口,菜单,自定义对象,控件等等。,PowerScript结构使用,一个结构是一个或几个相关变量的集合,它们有着相同或不同的数据类型,但都在同一个名字下。在有些语言中,例如Pascal和COBOL语言,集合又被叫做记录。集合允许将一些相关的数据项整合为一个整体而不是彼此独立。比如说,如果将用户的ID,地址,等级,照片组合为一个叫做user_struct的结构,就可以将这个变量的集合作为一个统一的user_struct结构来使用结构按存取范围分为2类:全局结构:作为一个独立对象存放在PBL中,可以直接申明并引用。如通过winzard创建一个Structure对象,然后在脚本中就可以使用了。譬如已经做好了一个结构叫做st_user_structure,则程序中应当如下使用:一、申明一个变量(上述四种变量中的一种)二、指定这个变量的类型为st_user_structure三、引用这个变量。譬如某事件中:st_user_structurelst_user_structurels_user_structure.user_id=asdfasdfls_user_structure.user_no=20对象结构:依赖某对象而存在,只能在这个对象内存取,如某窗口内定义一个结构。在View-structureList中可以看到所有在这个对象中的结构,双击该结构可以进行详细定义。使用方式和全局结构一致对象内部的结构如果申明为Instance变量,则必需加入Private前缀。,PowerScript常用程序结构,IF判断:1ifthenelse.endif2ifthenelseifthenelseifthenelseendif3ifthen,For循环:For起点to终点Step步长.Next/或EndFor如:Forli_row=1todw_1.rowcount()EndforForli_row=dw_1.rowcount()to1step1dw_1.deleterow(li_Row)Endfor,Do循环/方式1DOUNTILconditionstatementblockLOOP/方式2DOWHILEconditionstatementblockLOOP/方式3DOstatementblockLOOPUNTILcondition/方式4DOstatementblockLOOPWHILEcondition,ChooseCaseCHOOSECASEtestexpressionCASEexpressionliststatementblockCASEexpressionliststatementblock.CASEexpressionliststatementblockCASEELSEstatementblockENDCHOOSE,GOTOGOTOlabel.:label,PowerScript代名词,This指代当前Script所在的窗口、用户对象、菜单、应用程序或控件Parent指代包含当前对象的对象Super指代当前类的直系父辈。,PowerScript常用函数和语句(一)-Messagebox,MessageBox显示消息提示框,并得到用户的响应原型:MessageBox(title,text,icon,button,default)中内容表示可选参数Title:标题Text:文本,需要显示给用户看的消息,可以是字符串,数字,逻辑型;Icon:消息框中的图标,枚举类型,默认是Information!,可以是如下枚举类型值:Information!(默认)StopSign!(错误终止)Exclamation!(惊叹号)Question!(问题)None!(没有图标)Button:显示的按钮,枚举类型,默认是确定ok!(默认),确认按钮okcancel!-确认和取消按钮yesno!是和否按钮YesNoCancel是否取消按钮RetryCancel重试,取消按钮AbortRetryIgnore放弃,重试,忽略按钮Default:上述按钮中那个是默认的返回:对应按钮的位置,如指定按钮为okcancel!,用户按了确认,则返回1,按了放弃则返回2,示例:Messagebox(Title,Hello,thisisatest,Question!,Okcancel!,2),PowerScript常用函数和语句(二)-IS函数系,IS族函数和转换函数以Is开头的函数有很多,例如IsNumber、IsDate、IsTime等等,它们用来判断一个字符串是否符合某种数据类型的格式,它的返回值是一个布尔类型的值,当字符串符合类型要求时,返回值为True,否则返回值为False。诸如此类的函数统称为类型判断函数。之所以要用到这些函数是因为当我们用文本框输入数据时,需要用类型转换函数将输入的字符串转化为我们所需要的数据类型,如果该字符串与所要类型不匹配,转化时就会出现异常错误。比较好的解决方法是先用类型判断函数来检验输入的字符串,然后再进行类型转化。类型转化函数的作用是将某个字符串转化为另一种类型的数据格式。常见的类型转化函数有Integer(将字符串转化为整形),Long(将字符串转化为长整形),Real(将字符串转化为实形),Double(将字符串转化为双精度形),Dec(将字符串转化为十进制数)。另外有String函数将各种不同的数据类型转化为字符串,并可以规定转化的格式。,PowerScript常用函数和语句(三)-事件触发,Trigger,Post当使用Trigger来激活一个函数或事件时,它被立即执行。它的返回值可以在Script中使用。当用户使用Post来激活一个函数或事件时,它被加入到对象队列中并且按顺序执行。在大多数情况下,它在当前Script完成后被执行。但是如果在这段时间中其它系统事件发生了,那它可能在队列中被排到其它Script之后。它的返回值不能被Script使用。因为Post使得返回值对调用者不可见,所以可以把它想象成将函数或事件调入一种状态。一般情况下,如果需要将所在Script执行完毕后再调用其它函数或事件,则应该使用Post而不是Trigger。TriggerEvent和PostEvent是PowerBuilder中的事件函数,被用来触发某一个特定事件。尽管它们的功能已经被Post和Trigger所取代并得到加强。但为了向后兼容,它们仍然被保留了下来。但是你不能在调用事件时传递参数。必须将数据通过消息对象传递给事件的数据。示例带参数的执行某个事件,并且从消息对象中反馈参数值。首先带参数的执行该事件:w_xxx.postevent(ue_myevent,0,thisisatest)在窗口w_xxx的ue_myevent事件中接受参数:stringls_passed_stringls_passed_string=Message.stringparm,PowerScript常用函数和语句(三)-文件操作,文件操作在程序设计中是不可缺少的。可以用文件函数来打开一个文本或Blob文件并对它进行读写操作。可以用流模式(Stream!)或行(Line!)模式打开一个文件。在行模式中,文件每次被一行行的读入,每行之间被回车符和换行符隔开,最后以EOF(文件结束)为结束标志。在流模式中,文件被整个读入,并且换行符和回车符不被写入文件。用户一般用流模式将整个文件读入到MultilineEditor中,再整个写到文件中去。当打开文件时,PowerBuilder分给打开的文件一个独特的整数并且将指针放在文件中你所规定的地方。你可以用这个整数来标识文件以便读写或关闭文件。文件指针规定了下一次文件读写的起始位置并且在每次读写完成后由PowerBuilder自动更改。文件函数如下:FileClose:关闭一个打开的文件FileDelete:删除一个文件FileExists:判断文件或目录是否存在FileLength:得到文件长度FileOpen:打开一个文件,如果不存在,则创建FileWrite:写入一个文件FileRead:从某打开的文件中读取FileSeek:移动文件中读写位置GetFileOpenName:弹出标准文件打开对话框,得到一个需要打开的文件名;GetFileSaveName:弹出标准文件保存对话况,得到一个需要保存的文件名;,PowerScript常用函数和语句(三)其他,RGB函数RGB(红,绿,兰),RGB(R,G,B)R:0-255,红色G:0-255,绿色B:0-255,蓝色返回一个颜色值,长整形B*65526+G*256+R如rgb(255,0,0)=255,红色常用颜色对应的RGB值:红色:rgb(255,0,0)绿色:rgb(0,255,0)蓝色:rgb(0,0,255)黄色:rgb(255,255,0)黑色:rgb(0,0,0)白色:rgb(255,255,255)中灰:rgb(192,192,192)浅灰:rgb(128,128,128)深红:rgb(128,0,0)棕色:rgb(128,128,0)深绿:rgb(0,128,0),Open函数Open函数用来显示一个窗口,并且使得该窗口的一切属性和控件都变得对Script可用。Open函数在打开窗口的同时,也调用了该窗口的Open事件。Close函数Close函数关闭窗口并释放被窗口和窗口中所有控件占据的系统资源。在执行Close函数后,系统首先触发窗口的Close-Query事件,若事件返回值为1,则触发Close事件并关闭窗口。Create语句Create语句为某一对象类型创建一个实例。一个对象被创建后,对象的属性可以被访问。Create语句创建完毕后,创建生成的对象实例可以被当作一个变量来使用。如gu_registry=createu_sys_registryDestroy语句与Create相对应,从内存中删除该对象,如Destroygu_registry,用户自定义对象,UserObject,用户对象是由用户定制的具有特定功能的可重用对象。用户对象分可视和非可视两类,可视用户对象就是用户定义的控件,非可视用户对象本质上就是一个不可显示的类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度专业农产品集市摊位租赁经营合同
- 2025年度汽车抵押融资平台服务协议
- 2025版国际贸易保险合同范本下载
- 分布式光伏与建筑一体化2025年市场推广挑战与技术突破创新路径研究报告
- 2025版教育培训机构信息服务合同范本
- 2025碧桂园物业用房施工与物业服务质量保证合同
- 2025年农业循环经济菜园大棚承包与资源利用合同
- 2025年度婚纱摄影作品居间代理服务合同
- 2025年度租赁合同样本(含特殊条款定制服务)
- 2025电梯品牌代理商授权与区域市场管理合同范本
- 2025云南文山州融资担保有限责任公司人员招聘6人笔试参考题库附答案解析
- 2025山西运城市临猗县招聘社区工作者32人(一)考试备考试题及答案解析
- 2025年鞍山市铁西区教育局面向师范类院校应届毕业生校园招聘45人笔试参考题库附答案解析
- 空调与制冷操作考试试题(含答案)
- (2025年)河南省信阳市辅警协警笔试笔试真题(含答案)
- 网络直播带货讲解
- 2025江西九江都昌县公安局招聘警务辅助人员14人笔试备考题库及答案解析
- 肿瘤药物配制注意事项
- GB/T 22126-2025物流中心作业通用规范
- 工管人才面试宝典:高级管理面试题目及答案解析
- 宿舍用水管理办法
评论
0/150
提交评论