PowerBuilder 程序设计与系统开发.ppt_第1页
PowerBuilder 程序设计与系统开发.ppt_第2页
PowerBuilder 程序设计与系统开发.ppt_第3页
PowerBuilder 程序设计与系统开发.ppt_第4页
PowerBuilder 程序设计与系统开发.ppt_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PowerBuilder 程序设计与系统开发 陈玉明2002 9 PowerBuilder程序设计与系统开发 第一节 PowerBuilder基本原理第二节 基本知识 C S 数据库 第三节 对象及控件的基本属性及方法第四节 数据窗控件 Datawindow 的特性及方法第五节 基本应用 Application 的建立第六节 PFC PowerbuilderFounderClass 技术原理及实现 第七节 与数据库系统集成进行开发基本技术及方法第八节 高级编程技术 内容简介 关于PB AboutPowerBuilder 使用场合 Where 谁需要 Who 与数据库如何交互 How 学习内容 课程内容 What 关于PowerBuilder PowerBuilder最新版本为8 0 由Sybase公司出品 最早是由PowerSoft公司开发并发布销售的 并出品了到PowerBuilder5 0为止的各个版本 初期在广大开发人员中反映并不强烈 到1995年左右 由Sybase收购PowerSoft公司开始并成功推出了PowerBuilder6 0版本 由此开始 由于它的易用性 数据窗专利技术 对各种流行RDBMS的广泛支持 独特的开发方法及理念 独特的对象编程技术等等 成为现在为止可能是世界上用于数据库前端开发的最快捷 最方便 最强大的工具 一般而言 对一个小型的系统 在系统充分分析好的前提下 熟悉的程序员可以在一周以内完成一个独立的系统 这对于其他数据库系统前端开发工具 如VB Delphi VFP ORACLEDevelop2000等等 如果你用过这些工具 简直无法想象 虽然现在流行的开发工具并不是PB 因为现在到处都是B2B B2C PB在这方面能够实现 但比较其它专门工具而言 并不具有非常大的优势 而且实现的技术比较而言相对复杂 但对于C S结构的数据库应用及Internet而言 PowerBuilder仍然是非常好的选择 PowerBuilder应用场合 1 大型数据库系统C S模式前端开发工具或B S模式应用服务器开发工具 一般应用于需要大型或中型数据库系统支持 如ORACLE Sybase MSSQLServer DB2 Informix 作为后台数据支撑平台的管理类系统 一般可以承受千万级纪录量的系统 如 MRPII系统 物料资源计划 ERP系统 企业资源计划 CRM CustomerRelationManagement 客户关系管理 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 数据窗现在已经作为标准的ActiveX可编程对象 可以嵌入到其他程序中使用 但总是在PB中最方便 具有专利技术的数据窗集成了数据编辑的几乎所有的常用算法 操作方式等等 非常方便 5 实际应用中 通过众多的数据窗和其它标准Windows控件协调运行 就完成了最基本的功能 实际上远远不止这些 课程内容 内容 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 dll YouOcx 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 Liujiangang Messagebox 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 ODBC SQLCA AutoCommit FalseSQLCA DBParm ConnectString DSN pb class UID PWD 应用 3 连接 2 就指定了TransactionSQLCA的属性 然后就可以用数据库的四个方法中的Connect来处理如一个Application的常用的Open事件脚本为 SQLCA DBMS ODBC SQLCA AutoCommit FalseSQLCA DBParm ConnectString DSN pb class UID PWD Connectusingsqlca Ifsqlca sqlcode 1thenMessagebox Error cann tConnecttoServer 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 30 140 5 公用属性及特有属性指定字体 文本对齐方式 前景色 背景色 边框等 右对齐 水平中间对齐 向下对齐 向上对齐 左对齐 竖向中间对齐 等高 等宽 等高等宽 竖向等间距 横向等间距 文本色 前景色 背景色 边框 窗口 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 现实的文本 如 确定 O 就是这样的 PictureCommandButton中PictureName DisabledPictureName指定有效 失效时的图片 但因为不支持透明 故用的比较少 Htextalign VtextAlign 制定水平 垂直方向的文本对齐方式事件 clicked 最主要事件 在用户按下并抬起鼠标后触发 其他事件 rbuttondown dragdrop dragenter dragwithin dragleave getfocus lostfocus等等极少用 一般都在clicked事件中写脚本 函数 setfocus 取得焦点 一般在别的控件中调用 如cb xxx postsetfocus classname 取得名称 如cb test classname 就返回 cb test hide show resize move 等较少用到 用途 到处都用 但一个界面上按钮不易太多 而且布置要合理 用图片按钮给用户比较直接的感觉 但是颜色就固定了 窗口 10 窗口控件简介 静态文本 类型 StaticText 经常用 一般用做显示信息属性 text 显示的文本backcolor textcolor bordercolor 颜色属性 底色 前景色 边框色 事件 clicked doubleclicked 极少对它写脚本函数 同commandbutton 很少用 窗口 11 窗口控件简介 可编辑类 主要有 SingleLineEdit MultiLineEdit EditMask RichTextEdit属性 SingleLineEdittext 可以修改 其他和statictext一致 MultiLineEdit全部SingleLineEdit属性和事件 可以折行EditMask和SingleLineEdit一致 可以制定输入的格式 mask属性 如日期型 则mask输入 yyyy mm dd RichTextEdit 类word文档处理控件 一般较少用到事件 modified 最常用事件 指明做了修改后执行什么操作 getfocus 取得焦点后执行的操作 一般用来选择文本 如 this selecttext 1 len this text 其他事件很少用到函数 copy paste selecttext cut undo 等等 都是用于文本操作的 其他文本编辑控件都有这些函数 如sle test copy 表明将sle test中选中的文本复制到剪贴板 用途 除了数据窗以外的所有用户输入的口子都在这儿 因此用途非常广 结合数据窗 就可以完成用户输入部分的操作了 类型 HScrollBar Vscrollbar 滚动条HTrackBar VTrackBar 导轨HProgressBar VProgressBar 进度条属性 minposition maxposition position 指定最小 最大值 当前值如hpb 1 position 87 表明将进度条的位置移动到87处 不一定代表是 87 因为和maxposition有关 事件 TrackBar ScrollBarmoved 当移动按钮或导轨时触发函数 TrackBar ScrollBarsetposition setrange OffsetPos 设置位置 范围 相对移动用途 这几个控件 一般Hprogressbar较常用 经常使用在需要进行常时间运行的程序中 显示当前运行的总体进度 以免用户以为死机而reset PB是单线程内核 即使可以通过yield 函数来进行后台处理 但一旦执行某运算 一般是很难终止的 而且此时cpu的占用会非常高 以至用户以为机器死了 窗口 12 窗口控件简介 显示及控制类 窗口 13 窗口控件简介 下拉列表框 类型 DropDownListBox ddlb DropDownPictureListBox ddplb 属性 两者基本相似 ddplb多了一个图形显示及图形属性 图形处理函数而已 在实际使用中 基本上没有多少区别 Item 指定下拉列表中的项目 一般不能太多 否则就毫无意义 PictureName 按顺序指定图片名称 然后和item中的pictureindex对应Sorted 是否按item中的文本排序ShowList true 则永远显示下拉列表 一般很少用 本来就是想省地方 现在再占用一块地方 还不如用PictureListBox来的好 事件 selectionchanged当选中的对象改变时触发 一般都在这儿写脚本 可以通过事件的参数index来得到当前选中的是哪一项 函数 DirList 可以直接将某目录下的文件名全部显示出来 配合Treeview 可以自己做一个目录及文件树DirSelect 取出由dirlist 生成的列表中当前选中的文件名或目录名 Additem Insertitem DeleteItem 增加 插入 删除itemSelectItem 手工指定选中的itemTotalItems 一共有多少个itemReset 清除所有itemFindItem 查找符合条件的item用途 用在唯一需要确定某类型的时候 选项不要超过20个 否则很容易找不到 而且 20个图片堆在一起 很难确定那个是你真正需要选择的 窗口 14 窗口控件简介 列表类 类型 ListBox PictureListBox属性 事件 函数 与下拉列表类基本类似 甚至函数 事件 都差不多 不过列表类支持多选因此也就多了有关于多选的其他函数 常用的有3个 state 判断某个item是否为选中 setstate 设置某项的选中状态TotalSelected 一共选中了多少个用途 一般作为需要用户可以有多个选择余地的地方 但是item不能太多 5个里面挑一个好找 50个里面的话 只有眼花 窗口 14 窗口控件简介 视图类 类型 ListView TreeView这是两个仅次于datawindow的复杂程度和好用程度的两个控件 由于有比较丰富的属性和函数可调用 因此可以做出很多效果 属性 ListView LargetPicture属性主要是用来显示为LargeIcon 类型而设的 其他属性同PictureListBox但是可以指定多个列 而不是单个item TreeView一个item可以有3个图片 PictureIndex selectedPictureIndex StatePictureIndex每个Item不是单一的文本 而是特别的TreeViewItem 有自己的子属性如data label pictureindex selectedpictureindex level等等事件 SelectionChanged 选中项改变RbuttonDown 鼠标右键 一般用来做弹出菜单 menu xxx popup xpos ypos 函数 图片类 addpicture deletepicture 主要用于动态形成视图ListView add insert delete等等 如TreeView AddStatePicture DeleteStatePicture 处理状态图片AddItem DeleteImte SetItem 增加 删除 修改某节点 Item InsertItem 指定位置插入某ItemInsertItemLast 在某节点下级最后增加下层ItemInsertItemFirst 在某节点下级最前插入下层ItemInsertItemSort 在某节点下级中按排序插入下层ItemFindItem 相对查找 如同层 上层 下层Expanditem CollapseItem 展开 折叠指定节点SelectItem SetFirstVisible 选中某节点 使某节点第一个可见应用 非常广泛 窗口 15 窗口控件简介 其他 其它控件 图形控件 图表控件 Line Oval Rectangle RoundRectangle 他们总是处于最底层而不可能覆盖在其他控件的上方 没有事件 一般仅做装饰用 运行时修改它们的属性就可以实现各种效果 图表控件 Graph用来表示系列数据 一个图表控件可以有一个或多个数据系列 函数 AddCategory 将一个Category添加到控件中 AddSeries 在一个已经存在的Category中添加一个数据系列并返回一个值 AddData和InsertData 利用AddSeries的返回值在一个已经存在的数据系列中添加一个数据项 另外用户还可以直接在数据窗口中利用Graph风格来显示图形化的数据 菜单 Menu 菜单 Menu应用程序中一般都有菜单 原因很简单 因为如果每项命令都有按钮完成 就会因为按钮过多而使得用户在使用起来找不到头绪 而下拉式菜单不但具有占用空间小的优点 而且层次分明 每项功能都有相应的文字提示 所以对于一个复杂的应用程序来说 菜单绝对是必不可少的 Pow erBuilder提供了一个菜单画板 用户可在菜单画板中定义自己需要的菜单项和每个菜单项相应的脚本创建 文件 新建 对象 菜单即可进入菜单画板 或文件 继承 选择祖先菜单 然后也进入菜单画板 属性 每个菜单有若干级联的菜单项构成 每项成为一个menuitem 每个item都具有菜单的所有属性 包括 普通属性 name 名称 如果从祖先继承 则不能修改text 菜单文字 如 文件 F Microhelp 显示在MDIHelp框架窗口的状态栏中的文字Visible Enable 可见 使能shortcut 快捷键 如CTRL S 有下级菜单的菜单没有快捷键工具条属性 ToolbarItemText 工具条上的文字 ToolbarItemName 工具条图片 ToolbarItemDownName 工具条下压图片 ToolbarItemSpace 工具条前面的空格 ToolbarItemOrder 工具条顺序 ToolbarItemIndex 工具条所在的Dock顺序 菜单 如何使用 菜单的事件 selected 选中后 即鼠标通过该菜单项 clicked 单击后 一般在这儿写脚本 脚本编写 一般在脚本中打开某窗口 如 openSheet w mdi sheet parentwindow 0 original 就是在框架窗口parentwindow 菜单的属性 表明该菜单依附的主窗口 一般为MDIFrame 中打开w mdi sheet 并将打开的窗口的标题自动显示在定义为windows类型的菜单下 并保持原始w mdi sheet的位置 详细参数请查看opensheet函数 一般菜单用在2个地方 MDIFrame 框架窗口中 作为主程序的主要界面的一种执行方式 一般一个MDIFrame都必须指定一个菜单 Popup 弹出式菜单 用在特定的窗口或对象中 由menu xxx popup x y 来调用如何引用菜单 2种方式 显示和隐式引用 如有框架中定义菜单 m frame 其中有m file 文件 F m file open 打开 O m file empbar m file exit 关闭 x 则在主窗口中对该菜单中m file exit菜单项的引用可以是 m frame m file m file exit或m frame item 1 item 3 框架 框架应用程序 在如今的Window应用软件中 多文档 MDI 应用程序占了很大的比重 这是因为相对于单文档界面 多文档界面可以同时打开多个窗口 无需关闭窗口就可以打开另外一个 可以自由的在各文档之间切换 因此 为了使我们的软件更具实用性 能够更好的方便用户 创建一个MDI的应用程序就显得尤为必要 MDI应用程序由两部分组成 即MDI框架和框架内的工作表 Sheet MDI框架就是执行程序时首先打开的主窗口 在框架中打开的其它窗口被称为工作表 在同一屏幕中 主窗口即MDI框架只能有一个 而工作表可以有很多个 且只能在框架范围内活动 也就是说 当工作表被最小化时 它不会缩小在Win95的工具栏上 而会出现在框架底部的一个横栏上 当工作表被最大化时 它也只能被放大到充满整个框架 而不是整个屏幕 创建框架的方法很简单 只需首先在窗口属性中指定一个菜单 然后将窗口的类型改为MDIFrame或MDIFrameWithMicorhelp即可 MDI框架中的工作表实际上就是一个普通的窗口 但是不能是MDIFrame MDIFrameWithMicro Help或Response等类型的窗口 要想在一个MDI框架中建立一个工作表 只需调用函数OpenSheet即可 工作表在MDI框架中有三种排列方式 即Cascaded Layered 和Original 三种方式 用户可以在建立工作表时为工作表指定一种排列方式 也可以通过函数ArrangeSheets来重新排列工作关于工作表的函数还有GetActiveSheet 被用来返回当前MDI框架中被激活的工作表 它的返回值是一个窗口类型 当没有工作表被激活时 返回值为Null 用户可以通过IsVa lid函数来判断其返回值是否有效 GetFirstSheet 用来返回MDI框架中顶层的工作表 GetNextSheet用来返回指定工作表的下一个表 ParentWindow 函数 返回当前工作表的父窗口 也就是其所在的MDI框架 OpenSheetWithParm带参数的打开工作表 在MDI框架中的工作表如果带有菜单 那么当该工作表被打开后它的菜单将覆盖原来框架的菜单 当多个工作表具有不同的菜单时 在菜单栏上显示的将是当前被激活工作表的菜单 只有当关闭了所有的工作表 或者工作表根本没有菜单的时候 在菜单栏上显示的才是MDI框架的菜单 对于菜单项的每一项 无论它是MDI框架还是工作表的菜单 都可以为该选项设置状态栏上的提示信息 只需在菜单项的属性Micro Help中设置即可 一般 工作表的菜单都是从框架菜单继承或相同的 以免打开一个工作表后无法打开其他工作表 窗口 小结 1窗口是程序的核心界面 应用通过各个窗口 利用窗口中的各种控件和用户交互 完成数据的处理工作 2一般应用都以MDIFrame作为框架程序 3Sheet菜单从Frame菜单继承或没有菜单 保证框架界面的统一和完整 4界面设计应遵循一定的原则 不是想怎么做就怎么做 必须考虑协同开发问题 用以保证整体性和一致性 5脚本的编写 函数 事件的命名都必须考虑规范性的问题 从一开始养成良好的命名规范及编写习惯 对己对人都极有好处 Datawindow Intro Datawindow Datawindow 1 基础 1 数据窗口是用于查询 显示和维护来自关系数据库或其他数据源 如Excel文件或其他文件 数据的对象 在数据窗口中可以定义数据的显示格式 显示风格和其他数据属性 使数据对用户更加直观和更有意义 数据窗口最初使用在PB的C S结构中 为这种模式提供了强有力的数据查询和数据维护功能 随着PB及其相关技术和产品的发展 PB已经不是单一的C S应用开发工具 已经可以适应Web开发等各种需要 主要应用包括 Datawindow 1 基础 2 PowerBuilder数据窗口 作为在应用程序中的一个控件 HTML数据窗口 用于web应用的瘦客户端数据窗口 提供了大部分的PB数据窗的数据维护和编程等功能 数据窗口的ActiveXWeb控件 在Powersite内部建立Web页面时使用的ActiveX控件 Java版本的数据窗口 在PowerJ中建立Java应用使用的JavaBeans组件 Design time控件 Powersite使用 数据窗口插件 在浏览器中显示PowerSoftPSR报表 Datawindow 2 显示风格和数据源 显示风格 Style 用于定义数据窗口的显示风格和外部特征 Tabular 列表 记录横置于页面 标题在所有列的顶端 可以多行数据 Freeform 自由格式 每列左侧有一个标签 一屏只显示一条记录 Grid 网格 如Excel的sheet格式 Label 标签 每页有几个标签 每个标签一行 N UP 分栏 并列显示 Group 分组 在表头下按列分组的格式 Composite 组合 嵌套格式Graph 图表 数据的图形显示 Crosstab 交叉 行列格式的数据表示 列可动态计算 RichText 多信息文本 文本段落中可以嵌入列 Ole 连接或嵌入到数据窗口的OLE对象于获取的数据关联 数据源 DataSource 定义数据窗口中数据的来源 QuickSelect 来源于sql数据库的多表 SQLSelect 定义完整的sql语法 Query 通过查询面板定义的查询对象作为数据源 Storedprocedure 以存储过程作为数据源 External 通过文件输入或程序代码生成的数据 Datawindow 3 如何使用数据窗 1 使用数据窗主要包括以下两个步骤 一 在datawindowpainter或datawindowBuilder中创建或编辑一个数据窗口对象 二 在开发环境中 将一个数据窗口控件或组件放在窗口或web页面中 并把数据窗口控件和数据窗口对象关联起来 指定数据窗的dataobject属性 通过数据窗口控件 应用程序与在数据窗口画板中定义的数据窗口对象进行通讯 通过编写程序控制数据窗口控件和控件所包含的数据窗口对象 程序代码可以修改 查询数据 改变数据的表现形式 处理错误 共享数据窗口控件之间的数据等等 Datawindow 4 如何使用数据窗 2 关联 数据窗控件是一个对象容器 在窗口或其他对象中 指定某数据窗控件的dataobject到某存在的数据窗对象 就可以在窗口中使用该数据窗对象了 命名 dw前缀 如dw employee对象 d employee引用 w xxx dw employee Datawindow 4 数据访问 数据访问如果某数据窗需要和数据库建立联系 则该数据窗必须指定到某事务对象 因此一般通过以下步骤来访问 1 创建并连接事务对象 2 为数据窗设置事务对象 3 获取 修改数据 保存到数据库 4 断开数据库连接其中 1 4一般在Application中的open和close事件中处理 2 3示例 dw control settransobject sqlca 连接事务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 name 20 dw control object emp name 20 刘建刚 其他函数常用 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论