




已阅读5页,还剩80页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PowerBuilder 程序设计与系统开发 PowerBuilder 程序设计与系统 开发 第一节、PowerBuilder基本原理 第二节、基本知识(C/S,数据库) 第三节、对象及控件的基本属性及方法 第四节、数据窗控件(Datawindow)的特性及方法 第五节、基本应用(Application)的建立 第六节、PFC(Powerbuilder Founder Class)技术原 理及实现。 第七节、与数据库系统集成进行开发基本技术及方 法 第八节、高级编程技术 内容简介 n关于 PB(About PowerBuilder). n使用场合(Where)? n谁需要 (Who)? n与数据库如何交互(How)? n学习内容(课程内容)(What)? 关于 PowerBuilder Power Builder 最新版本为8.0。由Sybase公司出品,最早是由 PowerSoft公司开发并发布销售的,并出品了到Power Builder 5.0为 止的各个版本,初期在广大开发人员中反映并不强烈, 到1995年左右,由Sybase收购PowerSoft公司开始并成功推出了 Power Builder 6.0版本,由此开始,由于它的易用性、数据窗专利 技术、对各种流行RDBMS的广泛支持、独特的开发方法及理念、独 特的对象编程技术等等,成为现在为止可能是世界上用于数据库前 端开发的最快捷、最方便、最强大的工具,一般而言,对一个小型 的系统,在系统充分分析好的前提下,熟悉的程序员可以在一周以 内完成一个独立的系统。 这对于其他数据库系统前端开发工具,如 VB,Delphi,VFP,ORACLE Develop 2000等等,如果你用过这些工具, 简直无法想象。 虽然现在流行的开发工具并不是PB,因为现在到处都是B2B,B2C ,PB在这方面能够实现,但比较其它专门工具而言,并不具有非常 大的优势,而且实现的技术比较而言相对复杂。但对于C/S结构的数 据库应用及Internet而言,Power Builder仍然是非常好的选择。 PowerBuilder应用场合 1、大型数据库系统C/S模式前端开发工具或B/S模式应用服务器开发工 具,一般应用于需要大型或中型数据库系统支持(如ORACLE,Sybase,MS SQL Server,DB2,Informix)作为后台数据支撑平台的管理类系统,一般可 以承受千万级纪录量的系统,如: MRPII系统 物料资源计划 ERP系统 企业资源计划 CRM Customer Relation Management(客户关系管理) Call Center 呼叫中心(Haier) 2、中、小型数据库系统开发,一般数据量为10万左右,支持并发或仅 单机用户,如中、小型企业的内部信息管理、各种小型软件、共享软件等 ; 3、与Sybase的Power Dynamo,Jaguar CTS,Power Site等集成,建立电 子商务应用服务支撑平台; 4、与PHP,Java,ASP集成,作为Intranet或Internet的后台数据库系统维 护工具,如异种平台(Unix,Linux,Solaris,NT)上的ORACLE,MySQL,DB2等的 Client方式维护。 谁需要 PowerBuilder PB可以做的事情很多,因此也就成为现在各软件公司进行系统开发的一种 常用工具,如果你将从事下列工作或有这些需求,则最好了解或通晓PB: 1、数据库系统前端开发中的程序设计; 2、开发咨询或技术支撑; 3、数据库系统分析及设计; 4、需要掌握VB,Delphi,Developer 2000以外的其他工具; 5、了解Internet网站建设中可以保护现有PB资源的开发方式; 注意: PB与数据库系统是不可分离的,因此,你只有对DBMS有基本的理解才可 能用好PB,精通当然最好。 如果你不知道DBMS是什么东西,请先学习相关内容,如南京大学数据 库系统概论是非常好的入门教材,各流行数据库系统的基本概念都涵盖了。 PB 与数据库交互原理简介 PowerBuilder的吸引人的地方也就是它的数据窗技术,描述为: 1、前端(Client)建立独立的Transaction(缓冲区,事务对象),用 于响应用户请求及返回执行结果; 2、任何事务都必须在某Transaction中执行,默认为SQLCA(SQL Connection Area),如 select * from table_xxx using sqlca; Dw_xxx.settransobject(sqlca); 3、数据窗通过Transaction提取数据、编辑数据、再根据需要回 写数据,并保证在同一事务内,这样就完成了日常的数据的维护、 更新等操作。 4、数据窗现在已经作为标准的ActiveX可编程对象,可以嵌入到 其他程序中使用,但总是在PB中最方便,具有专利技术的数据窗集 成了数据编辑的几乎所有的常用算法、操作方式等等,非常方便。 5、实际应用中,通过众多的数据窗和其它标准 Windows控件协 调运行,就完成了最基本的功能。 实际上远远不止这些 课程内容 内容: nPower Builder基本原理; nPB基本知识(对象、函数、事件、变量、脚本、继承) ; n对象及控件的基本属性及方法; n数据窗控件(Data window)的特性及方法; n基本应用(Application)的建立; n与数据库系统集成进行开发基本技术及方法; nPFC(Power builder Founder Class)技术基本原理; n编程完成上机作业,期未验收。 PowerBuilder基本原理 n编程原理 n开发界面 n库(Library)管理 n基本对象及控件 n运行方式 PowerBuilder运行原理 开发支持库 Pblib.dll Pbcmp.dll Pbudo.dll Pbrtc.dll 开发(PBLs) 编译(Pcode,Mcode) 应用(Application:DLL,Exe,PBD) BugFixing 运行支持库 PBvm70.dll PBdwe70.dll Libjcc.dll Pbo8470.dll Pbrtc.dll YouOcx.OCX YouLIb.DLL DBMS 发布(InstallShield) PowerBuilder基本原理 - 开发 界面 脚本 预览 菜单 工具条 对象属 性面板 函数及 事件 状态条 PowerBuilder基本原理 - 开发 界面 说明: 1、PB开发为标准的MDI方式,即对应不同的开发对象,有它不同的菜单及工具 条,对应不同的功能; 2、可以创建的对象包括4大类: 对象(窗口、函数、结构、菜单) 数据窗对象(Grid,Free Form,Tabular,Label,N-Up) 数据库(Database Profile,Query,Pipeline) 工程(Application,Proxy Library,COM CTS,OLE2,Java Proxy) 3、常用工具 Library,Editor,Class view Browser,DB Profile Editor, Debugger,DW Syntax等 数据库基本知识 -1 一、C/S模式图示 DB Servers TCP/IP 发送SQL语句 到数据库服务器 返回SQL语句 查询结果到客户机 WinNT,Linux,Unix Microsoft SQL Server ORACLE Sybase,DB2,Informix Clients Servers ClientsClients 1、客户端运行自己的程序,向服务器发送SQL请求及取回结果 。 2、服务器侦听网络,响应请求并返回处理结果。 物理设备 数据库基本知识 -2 二、数据库系统基本组成 DBMS Applications (应用) 网络,协议 介质,接口 DB Tools (管理工具) 存储管理 数据库管理 数据库中的对象管理 1.表单 2.视图 3.触发器 4.索引 5.存储过程 4.函数、包 数据库基本知识 -3 n表单(Table):由属性和记录构成的二维关系表; n视图(View):基于单表或多表的查询; n存储过程(Store procedure):存储于数据库服务器上的一系列操作的合 集,由服务器执行,可以增强可管理性和运行效率; n触发器(Triggers):当对表的某种操作发生时,就引发其他的一些逻辑处 理; n索引(Index):服务于快速查询,寄生于表的一种服务; n函数,包(function,package):类似于存储过程; n数据库(database):上述各对象的集合; n设备(device,tablespace,datafile):存放数据库的物理定义; n日志(log):记录对数据库的任何操作,用于备份和恢复; n用户(User):可以使用数据库中具体内容的人员定义; n角色(Role):给同一用户赋予不同的角色,享有不同的权限; n权限(Privilege):赋予用户操作数据的权限; 三、关系数据库系统基本概念 数据库基本知识 -4 Sybase 随PB发行的Adaptive Server Anywhere (ASA) 6.0 是短 小精悍的个人数据库系统,支持了大多数的关系数据库操作。如日志、事务 、用户、触发器,并提供管理中心(Sybase central)来管理数据库的内容, 在PB中,一个小型的数据库应用用ASA作为后台数据库已 经完全可以胜任。本课程的后台数据库将主要放在ASA。 Sybase Central实际上是以插件方式运行的,他可以管理 Sybase产品中的大多数,如Sybase Enterprise (SYE)数据库, Jugar CTS PowerDynamo, 等等.提供了统一的界面。当然也可以通过SQL语句来管理数 据库。包括建表、索引、存储过程、触发器,数据更新,授权等等都可以通过 SQL语句来执行。 下面将通过演示来讲解关于Sybase Central的使用,特别 是如何建库,建表等操作。 四、ASA中的数据库管理 应用 - Applicaiton n如何建立应用(Application) n事件及脚本(Events and Scripts) n连接(Transaction) n入口(Start Pointer) 应用 - 1.建立 1、Menu-File-New-Application (菜单-文件-新建-开始向导-Application) 2、选择应用名称和存放的库文件 一个应用就建立完毕。实际上这个应用没有任何脚本、窗口,也没有处理任何事情。 应用建立完毕后,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中创建一个新的application. 应用 - 2.事件及用途(1) Application的事件 Open 当一个应用执行时,即触发此事件,实际上就是程序的入口,一般处理一些公用变量 ,公用对象,连接数据库,打开主窗口等操作; Close 当主窗口关闭后触发此事件,如果没有打开任何窗口,则在Open事件后直接触发此事 件,一般在这个事件中断开连接,清除变量等操作; Connectiongbegin 当连接开始时触发此事件,由connect 函数直接触发此事件 Connectionend 当连接结束后触发此事件,由disconnect函数触发 Idle idle(xxx second)函数触发,既当系统处于等待状态指定秒数xxx后触发该事件,一般 处理如关闭系统,提醒用户等 Systemerror 当程序运行发生任何系统错误时触发该事件,一般处理记录错误,提醒用户等操作。 常用事件:open,close,systemerror 应用 - 2.事件及用途(2) 脚本(scripts)编写基本知识 一般依赖于某事件或函数,由事件或函数触发而执行,由换行或;表明一条语句的结 束,如 Connect using sqlca; Open(w_main_frame) Disconnect using sqlca; 任何嵌入式SQL都必须用;来表明该语句的结束,如 Select student_name into :ls_name from table_1 where col_1 = hello; 大小写不敏感,如ls_name 和LS_Name表明同一个变量或对象 可以在一行写多条语句,用;隔开。如 ls_name=xxx;ls_name2=yyy;li_cnt=2; 变量或对象的引用前必须声明,如 stirng ls_name=abc /初始值 ls_name=Liujiangang Messagebox(Hello,My Name is +ls_name) 就是弹出一个消息框,并提示标题为Hello,内容为 My Name is Liujiangang 的内容。 并显示确认按钮用来接受用户响应。 应用 - 3.连接(1) 一般地,在数据库前端开发中,都连接到某数据库服务器的某数据库,或者连接到本地的某 数据库或ODBC源,而连接一般是在应用的Open事件中处理的,在Close事件中关闭此连接,连 接实际上是Transaction对象,该对象有下列常用属性: DBMS:指定数据库管理系统的名称,如O84 ORACLE 8.0.4,ODBC ServerName:指定数据库服务器名称,如EPCS_LOCAL,MSS_DB等 Database:指定数据库服务器上的数据库,如MaterialDB UserID:指定数据库用户的ID号,如dbo UserPass LogID:指定用于连接到数据库服务器的用户ID号,如 connector LogPass DBParm:附加的连接参数,如ApplicaitonName=“asdfadsf”等,随DBMS而 变化 AutoCommit:是否自动提交,如True,false 以上这些参数对特定的DBMS不是都必需的,一般DBMS,ServerName,都必须指定。 其他属性(该对象创建后才具备): SQLCode:最近SQL语句执行的PB结果码,0,-100,-1三个数值 SQLDBCode:最近事务中SQL语句返回的数据库操作返回码; SQLErrtext:最近操作的错误信息; SQLNRows:最近操作返回的结果数据; 一般,一个应用中已有默认的Transaction存在,即SQLCA,因此,在Application的OPEN事件 中就可以指定它的具体属性用来连接数据库,如 / Profile pb_class SQLCA.DBMS = “ODBC“ SQLCA.AutoCommit = False SQLCA.DBParm = “ConnectString=DSN=pb_class;UID=;PWD=;“ 应用 - 3.连接(2) 就指定了Transaction SQLCA的属性,然后就可以用数据库的四个方法中的 Connect来处理如一个Application的常用的Open事件脚本为: SQLCA.DBMS = “ODBC“ SQLCA.AutoCommit = False SQLCA.DBParm = “ConnectString=DSN=pb_class;UID=;PWD=;“ Connect using sqlca; If sqlca.sqlcode = -1 then Messagebox(Error,cannt Connect to Server+sqlca.serverName,stopsign!) halt close / 终止并处理Application的Close事件 End if Open(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个),仔细理解属性的具体用途及含义对用好窗口对象非常 重要。 常用属性: 属性名称含义 标题 (Title):定义该 窗口的标题栏 ; 类型(Window Type)定义该 窗口的类型: Main! - 主窗口,常用方式 Popup - 弹出式窗口,用来为其它窗口提供支持信息 Child! 由父窗口打开,并且只能在父窗口范围内存在 Response! -用于输入信息,模式窗口 MDI!,MDIhelp! - 多文档窗口 菜单(MenuName)对Main,MDI,mdihelp类型的窗口有效,设置该窗口的菜单名称 外观属性外观:enabled,visible,titlebar,maxbox,minbox,resizeable, border,backcolor,mdiclientcolor,HscrollBar,VScrollBar等等 位置:x,y,width,height,pointer 菜单: toolbarvisible,toolbaralignment,toolbarx,toolbarY, toolbarWidth,ToolbarHeight 运行态属性(只读,描述性 质) Control,menuid 运行态属性bringtotop 窗口 - 3.窗口支持的控件.1 窗口共支持以下33种标准控件 1CommandButton命令按钮(cb_ok,cb_cancel)18HScrollBar水平滚动条 2PictureButton图形按钮(pb_ok,pb_cancel)19VScrollBar垂直滚动条 3CheckBox检查框(cbx_choice_1)20HTrackBar 水平导轨 4RadioButton收音机按钮(单选按钮)(rb_tes)21VTrackBar 垂直导轨 5StaticText静态文本(st_notice)22HProgressBar 水平进度条 6StaticHyperLink文本超级连接(shl_1)23VProgressBar 垂直进度条 7Picture图形(p_1)24DropDownListBox下拉列表框(ddlb_ 8PictureHyperLink图形超级连接(phl_1)25DropDownPictureListBox下拉图形列表框(ddplb_ 9GroupBox分组框26ListBox列表框(lb_) 10Line线条27PictureListBox图形列表框 11Oval椭圆28ListView列表视图 12Rectangle矩形29TreeView树 13RoundRectangle圆角矩形30Tab标签 14SingleLineEdit单行编辑(sle_test)31DataWindow数据窗 15EditMask掩码编辑 (em_year)32Graph图表 16MultiLineEdit多行编辑33OLEOLE2对象 17RichTextEdit富文本编辑34UserObject 用户自定义控件(对象 ) 窗口 - 3.窗口支持的控件.2 这些控件各自有自己的属性,事件及函数 (Properties,Events,Functions),以后我们将穿插在各 章节中提及。 UserObject是一种特殊的对象(控件),它以 Custom Class,Stand Class,Custom Visible,External Visual,Stand Visual五种基本类为基类,拥有该基类 的基本属性,同时在他们的基础上扩展属性,函数 及事件,并直接作为一个可视化控件可以被window 或实例化后使用。 窗口 - 4.窗口常用事件 事件是描述一个窗口或窗口中控件的行为的语法,只有在满足特 定的条件时才会触发该事件,一般一个事件反映了某种条件下的某一动作 。也可以手工方式使系统满足这些条件从而触发这些事件。 事件名称事件含义及用途 Open 当该窗口被用open()函数打开时触发该 事件,一般作为该 窗口进行初始化处理的入 口 Close 当该窗口被关闭后消失前触发,可能被close()函数关闭,也可能是系统级 关闭操作 ,一般用于收尾处理 Resize 当该窗口的大小调整时触发,一般用于调整界面控件的相对位置 CloseQuery 后于Close事件触发,当该窗口准备关闭前触发,可以替代close事件,并可以决定是 否可以关闭 Timer 由窗口函数Timer()触发,到达指定秒数后触发该 事件,一般用于控制。 Activate 当窗口被激活前触发,触发后焦点自动移到该窗口的第一个制表站或上次的制表站, 如果没有任何可编辑对 象,则该 窗口获得焦点。 Deactivate 当该窗口变为 非激活状态前触发 鼠标事件 Clicked,doubleclicked,mousedown,mousemove,mouseup,rbuttondown 拖放事件 Dragdrop,dragwithin,dragenter,dragleave 键盘 Key,systemkey 其他 DDE控制,Other,show,hide, ToolbarMoved,Help 窗口 - 5.窗口常用函数 窗口函数一般用来控制窗口的行为,取得窗口信息,控制窗口的行为,触发 特定事件等等 函数名称函数含义及用途 Open(),openSheet( ) 系统级 函数,用于打开某特定窗口,变参调用 Close() 系统级 函数,用户关闭某窗口,变参调用 PostEvent 在当前脚本执行完毕后触发某事件(后续某动作),变参 TriggerEvent 立刻触发某事件(嵌入某动作),变参 Parentwindow() 系统级 函数,取该窗口或某对象的父窗口 Classname() 指定窗口或对象的类名(名称) Typeof() 返回当前对象的类型(powerobjet) Timer(seconds) 开始计时 ,如Timer(5,this)表示本窗口在5秒后触发Timer事件,变参 ArrangeSheets() 如果是MDI框架窗口,则按指定方式排列所有文档窗口 Hide(),show() 隐藏,显示,setredraw(false) 大小及位置 Move(x,y),resize(w,h),workspacewidth(),workspaceheight(),workspacex( ),workspacey(),setposition 菜单 Settoolbarpos(),settoolbar(),changemenu() 鼠标 Pointerx(),pointery() 其他 DDE控制系列函数 窗口 - 6.窗口控件操作(一) 在界面设计中,往往用到非常多的控件放在同一窗口中,一般会有下列要求: 1:对齐操作 包括左、上、下、右,竖向、横向对齐等操作。 以第一个选择的对象为基准 2:大小操作 包括宽度,高度: 3:相对位置操作 水平间距,竖向间距(三个以上对象选中时才有效) 4:制表站(tab order)定义 当运行时,用户按tab在各个控件上的移动顺序,一般以10进位 如 10,20,30140 5:公用属性及特有属性指定 字体、文本对齐方式、前景色、背景色、边框等: 右对齐 水平中间对齐 向下对齐 向上对齐 左对齐 竖向中间对齐 等高 等宽 等高等宽 竖向等间距 横向等间距 文本色(前景色) 背景色 边框 窗口 - 7.窗口控件操作(二) 其他按钮功能 : 保存 剪切对象或文本 复制对象或文本 粘贴对象或文本 撤销或重做上次 的任意操作 打开当前选中对象的脚本属性面板切换到当前选中对象 脚本工具按钮 全选选中行及光标所在行标记为注释 选中行及光标所在行标记为非注释 查找和替换编译当前脚本 粘贴各种语法或 原型定义 置于最前端 置于最后端 窗口 - 8.窗口控件的公用属性 每个控件都有的属性共7个,这实际上是可视控件(Control)的最基本属性 Name: 在窗口中唯一标记该控件的有效字符串 Enabled :使某控件失效或使能,失效后用户无法操作,但是可以手工触发它的事 件 Visible:可视与否 Foreground Color:前景色(按钮无效) 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() /检索数据 .处理数据 /更新数据 if dw_control.update(true,false) = 1 then commit using sqlca; /提交数据 dw_control.resetupdate() else rollback using sqlca; /回滚最近的提交 end if 加载外部数据: importClipboard,importfile,importstring函数提供了获取外部数据的方式 Datawindow - 5.数据维护 数据维护 一个数据窗有三个缓冲区用来存放用户的数据: 主缓冲区(Primary!):保存未被修改或删除或过滤出的数据; 过滤缓冲区(Filted!):被过滤出的数据; 删除缓冲区(Deleted!):被用户删除的数据 PB通过这三个缓冲区保留用户所有对检索出来的数据的操作,然后统一处理为与数据库打交道的sql语法,如 insert,delete,update,实际上就是完成最终的这三种操作。 数据存取 提取: GetItemDate,GetitemDateTime,GetItemDecimal,GetItemNumber, GetItemString,GetItemTime,GetText 写入: SetItem dw_control.getitemString(20,emp_name)即得到Primary!缓冲区中第20行的emp_name列的值。 setitem(20,emp_name,刘建刚)即设置Primary!缓冲区中第20行的emp_name为指定值。 也可以用数据窗控件的对象属性来存取数据,如上述语法可以对应为: dw_control.object.emp_name20 dw_control.object.emp_name20 = 刘建刚 其他函数常用: Accepttext,DeleteRow,Filter,Getrow,InsertRow,Reset,Retrieve RowsCopy,RowsMove,RowsDiscard,RowCount,ModifiedCount,DeletedCount,FiltedCount ScrollToRow,ScrollPriorPage,ScrollNextPage,ScrollFirstPage,ScrollLastPage SelectRow,GetItemStatus,SetItemStatus ,SetFilter,SetSort,Find ShareData,ShareDataOff,SaveAs,SaveAsAscii Update,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.先通过Datawindow Winzard设计好数据窗对象,如 d_my_first_grid 2.新建或继承一个窗口,在窗口中加入一个数据窗控件dw_1 3.查看该控件的属性,调整dataobject属性,连接到刚才的数据 窗对象,或在程序中指定他的属性,如: dw_1.dataobject = d_my_first_grid 按 “” 弹出如下对话框,选择 刚才设计的数据窗对象就可以了 Datawindow - 8.2 数据窗应用 示例 使用步骤: 1.创建事务对象,默认为SQLCA,可以自己定义一个全局事务变量; 2.指定该事务对象的属性,连接到数据库;(一般在Application 的Open 事件中处理), 如: / RollCall 的连接定义 SQLCA.DBMS = “ODBC“ SQLCA.AutoCommit = False SQLCA.DBParm = “ConnectString=DSN=RollCall;UID=;PWD=,PBCatalogOwner=dba“ Connect using sqlca; if sqlca.sqlcode 数组变量类型可以是任意类型,包括窗口,菜单,自定义对象,控件等等。 PowerScript 结构使用 一个结构是一个或几个相关变量的集合,它们有着相同或不同的数据类型,但都在同一个名字 下。在有些语言中,例如Pascal和COBOL语言,集合又被叫做记录。集合允许将一些相关的数据项整合为一个整体 而不是彼此独立。比如说,如果将用户的ID,地址,等级,照片组合为一个叫做user_struct的结构,就可以将这 个变量的集合作为一个统一的user_struct结构来使用 结构按存取范围分为2类: 全局结构: 作为一个独立对象存放在 PBL 中,可以直接申明并引用。如通过winzard创建一个 Structure对象,然后在脚本中就可以使用了。譬如已经做好了一个结构叫做 st_user_structure,则程序中应当 如下使用: 一、申明一个变量(上述四种变量中的一种) 二、指定这个变量的类型为 st_user_structure 三、引用这个变量。 譬如某事件中: st_user_structure lst_user_structure ls_user_structure.user_id = asdfasdf ls_user_structure.user_no = 20 对象结构: 依赖某对象而存在,只能在这个对象内存取,如某窗口内定义一个结构。在View - structure List中可以看到所有在这个对象中的结构,双击该结构可以进行详细定义。 使用方式和全局结构一致 对象内部的结构如果申明为Instance变量,则必需加入Private前缀。 PowerScript 常用程序结构 IF 判断: 1if then else end if 2 if then elseif then elseif then else end if 3 if then For 循环: For 起点 to 终点 Step 步长 . Next / 或 End For 如: For li_row = 1 to dw_1.rowcount() End for For li_row = dw_1.rowcount() to 1 step 1 dw_1.deleterow(li_Row) End for Do 循环 / 方式1 DO UNTIL condition statementblock LOOP /方式2 DO WHILE condition statementblock LOOP / 方式3 DO statementblock LOOP UNTIL condition / 方式4 DO statementblock LOOP WHILE condition Choose Case CHOOSE CASE testexpression CASE expressionlist statementblock CASE expressionlist statementblock . . . CASE expressionlist statementblock CASE ELSE statementblock END CHOOSE GOTO GOTO label . :label PowerScript 代名词 nThis 指代当前Script所在的窗口、 用户对象、菜单、应用程序或控件 nParent 指代包含当前对象的对象 nSuper 指代当前类的直系父辈。 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,this is a test,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,this is a test) 在窗口w_xxx的 ue_myevent 事件中接受参数: string ls_passed_string ls_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,红色 常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村人才吸引与职业发展路径试题及答案
- 中秋佳节 感恩同行
- 叶公好龙美术课件
- 2024年高校辅导员考试复习计划试题及答案
- 委托个人设计合同范例
- 工程担保合同
- 二零二五员工入股股份协议书
- 2025年终工作总结模板6
- 制作护理计划单
- 二零二五版金融贷款居间服务合同书
- 学风建设主题班会(大学班会)
- 干洗店服务合同
- IDC机柜租赁服务合同
- 2025年浙江金华义乌市道路运输管理局招聘历年高频重点提升(共500题)附带答案详解
- 急性心房颤动中国急诊管理指南(2024)解读
- 知识产权合规管理体系解读
- 城中村房屋拆除及安置方案
- 护理不良事件之管路脱出
- 区域医学检测中心的建设与管理V3
- 未成年人权益保护培训
- 技能竞赛(电工电气设备赛项)备考试题库(含答案)
评论
0/150
提交评论