PB数据窗口高级技术

上传人:豆浆 文档编号:3156466 上传时间:2017-07-30 格式:DOC 页数:129 大小:325KB
返回 下载 相关 举报
PB数据窗口高级技术_第1页
第1页 / 共129页
PB数据窗口高级技术_第2页
第2页 / 共129页
PB数据窗口高级技术_第3页
第3页 / 共129页
PB数据窗口高级技术_第4页
第4页 / 共129页
PB数据窗口高级技术_第5页
第5页 / 共129页
点击查看更多>>
资源描述

《PB数据窗口高级技术》由会员分享,可在线阅读,更多相关《PB数据窗口高级技术(129页珍藏版)》请在金锄头文库上搜索。

1、第 10 章 数据窗口高级技术10.1 概述数据窗口对象主要用于操作数据库中的数据,它不仅为数据的增加、删除、修改、更新和查询等数据库操作提供了图形化接口,而且还可以指定数据的输入格式、输出格式以及数据的显示风格。此外,在 PowerBuilder 7.0 以后的版本中,用户还可以在数据窗口对象中增加多种对象(包括按钮、静态文本框、图片等 )。应用程序中使用的数据窗口通常由数据窗口对象和数据窗口控件两部分组成。数据窗口控件是粘贴到窗口上的一个对象,与 OLE 控件有点类似;数据窗口对象是粘贴到数据窗口控件或数据存储中的对象,它通过数据窗口画笔来创建,并保存到应用库中。通过数据窗口对象与数据窗口

2、控件的配合使用,来完成数据的显示、增加、删除、修改等操作。创建数据窗口的一般步骤为:(1) 使用数据窗口画笔创建数据窗口对象,并把它保存到 PowerBuilder 应用库中。创建数据窗口对象的操作一般包括下述内容:定义数据源、选择数据窗口的表现风格、设置数据窗口对象及该对象内其他对象的属性(例如显示格式、编辑风格、跳转次序、有效性规则、排序与检索条件)等。如图 10-1 所示。图 10-1 数据窗口对象的创建(2) 在窗口或用户对象中建立一个数据窗口控件,如图 10-2 所示。图 10-2 创建数据窗口控件(3) 设置数据窗口控件的属性或编写代码,建立数据窗口控件与数据窗口对象的关联。(4)

3、 针对具体应用,编写数据窗口控件的事件处理程序,如显示数据、响应用户操作。考虑到本书的读者对 PowerBuilder 已经有了一定的了解,这里只给出了创建数据窗口的大致步骤,具体细节请参阅 PowerBuilder 的入门书籍或者帮助文件。第 10 章 数据窗口高级技术10.2 数据窗口控件的重要属性、事件和函数(1)与其他控件相似,数据窗口控件也是放置在窗口或用户对象上的一个控件。数据窗口控件的属性、事件和函数的数量相当庞大,这里主要介绍一些不容易掌握的属性、函数和事件。10.2.1 数据窗口控件的重要属性在 PowerBuilder 的可视化界面中,可以设置数据窗口控件的绝大部分属性,多

4、数属性的作用从属性名称中就可以判断出来,但是有些属性的作用却不容易判断,例如:DataObiect、DragAuto 等,此处主要介绍一下这些属性的作用。(1) DataObject 属性String 类型,指定与数据窗口控件相关联的数据窗口对象名或报表对象名。比如代码中使用语句 dw_1.DataObject = d_zuozhe,可将数据窗口对象 d_zuozhe 显示在数据窗口控件 dw_1 中。这在创建动态数据窗口时经常用到。(2) DragAuto 属性Boolean 类型,指定 PowerBuilder 是否自动把数据窗口控件置入拖曳模式(Drag Mode)。有效取值为:True

5、,当数据窗口控件被单击时,数据窗口控件自动进入拖曳模式; False,当数据窗口控件被单击时,数据窗口控件不自动进入拖曳模式。此时,如果需要让数据窗口控件进入拖曳模式,需要在代码中使用 Drag()函数手工设置。(3) Object 属性DWObject 类型,用于在代码中直接操作数据窗口对象中的对象,包括设置对象的属性、得到数据窗口中的数据等。数据窗口对象中的对象包括:列对象、文本对象、图像对象、按钮对象、Datawindow 对象等。(4) 示例例如,放置了数据窗口 dw_zuozhe 的窗口 w_test 如图 10-3 所示。图 10-3 更改数据窗口属性前在窗口的 open 事件中添

6、加代码:dw_1.Object.s_zuozhexingming_t.text=修改后的姓名编码显示的变化如图 10-4 所示。图 10-4 更改数据窗口属性后10.2.2 数据窗口控件的重要事件数据窗口控件的事件很多,这里主要从如何利用事件进行应用开发的角度对数据窗口控件的事件分类介绍并给出部分实例。当然,本书对事件的分类并不是绝对的。对于一些比较容易的事件,例如 Clicked 事件等,这里就不再赘述。1. 用于触发数据窗口内部控件的事件PowerBuilder 的数据窗口提供了用于触发内部控件的事件,这些事件主要用于数据窗口内的按钮控件,下面分别介绍:(1) ButtonClicking

7、 事件ButtonClicking 事件在单击数据窗口内的按钮对象时触发。触发的条件是该按钮的SuppressEventProcessing 属性设置为 no。该事件在 ButtonClicked 事件之前、Clicked 事件之后触发。该事件在系统处理按钮的默认动作前触发。返回值的意义为:0,继续处理;1,不执行按钮的指定动作,但仍会接着触发 ButtonClicked 事件。返回的参数包括: row:长整形,用户单击的行号。 Actionreturncode:长整形,该事件返回的动作代码。 dwo DWObject:指针类型,指向用户单击的对象。(2) ButtonClicked 事件当数

8、据窗口内的按钮对象的 SuppressEventProcessing 属性设置为 no 后,单击该按钮时触发ButtonClicked 事件。该事件在系统处理完按钮的默认动作后触发。返回的参数包括: row:长整形,用户单击的行号。 dwo DWObject:指针类型,指向用户单击的对象。(3) 示例在 dw_1 的 Buttonclicking 的事件上添加代码:dw_1.Object.s_xiaozhuan_t.text=触发 buttonclicking 事件后的小传单击数据窗口中的【确定】按钮后可以看见窗口内容的变化,如图 10-5 所示。图 10-5 Buttonclicking 事

9、件演示2. 用于处理数据窗口错误的事件要使应用程序具有良好的容错性,处理好数据窗口的错误事件至关重要。下面分别介绍常用的数据窗口错误事件。(1) DBError 事件当数据窗口控件访问数据库时发生数据库错误则触发该事件。该事件返回值的意义为:0,默认值,系统显示出错信息;1,系统不显示出错信息。可以利用该事件进行数据窗口的错误处理。在这个事件中,可以编写自己的出错处理程序,以提高程序的容错性。该事件的参数为: sqldbcode:长整数类型,包含由数据库厂商提供的特定出错代码,代码含义可以参见数据库厂商提供的有关文档。如果数据库厂商未提供出错代码,则sqldbcode 值的意义如表 10-1

10、所示。表 10-1 sqldbcode 值的意义sqldbcode 值 意 义1 不能连接到数据库(可能是因为事务对象中未正确提供某些参数)2 不能连接到数据库3 Update 或 Retrieve 中指定的键值与现有行不匹配4 写 Blob 型数据时发生错误 sqlerrtext:字符串型,数据库厂商提供的错误消息文本。 Sqlsyntax:字符串型,发生错误的 SQL 语句的全部代码。 Buffer:数据窗口缓冲区,错误发生时数据行所在的缓冲区。它的取值为Delete!、Filter!或 Primary!。 Row:长整型数,在对数据行进行 UPDATED、SELECTED、INSERTE

11、D 或 DELETED操作时发生错误的数据行号。例如,在 DBError 事件中可以编写如下脚本:CHOOSE CASE sqldbcodeCASE -4 /写 Blob 数据类型时出错。MessageBox(Error,出错行在+string(row)+ 写 Blob 数据时出错)CASE /其他出错代码END CHOOSERETURN 1 /隐藏系统出错消息窗口(2) Error 事件Error 事件当数据窗口对象的数据或属性表达式发生错误时触发。该事件的参数为: errortext:字符串型,PowerBuilder 的出错消息文本。 errornumber:无符号整型数,PowerBu

12、ilder 的出错信息编号。 errorwindowmenu:字符串型,引起错误的窗口或菜单名。 errorobject:字符串型,引起错误的对象。 errorline:无符号整型数,发生错误的行号。 errorscript:字符串型,引起错误发生的脚本。 action:ExceptionAction,该参数指定执行完 Error 事件中的脚本以后,应用程序要做的相应工作。该参数的取值如表 10-2 所示。表 10-2 ExceptionAction 参数取值参 数 取 值 意 义ExceptionFail! 触发 SystemError 事件ExceptionRetry! 如果是 OLE 服

13、务器没有准备好,重新执行函数或检查表达式,该选项对数据窗口控件不适用ExceptionIgnore 忽略发生的错误(使用该参数时要小心,忽略当前错误可能会引起其他错误)ExceptionSubstituteReturnValue! 取消错误条件并使用 returnvalue 指定的值代替 OLE 服务器或数据窗口返回的值 Returnvalue:Any 型(Any 型可以保存各种数据类型,包括标准数据类型、对象、结构等,但是它不能用于 EAServer 的组件定义),用于ExceptionSubstituteReturnValue!选项的返回值。例如,在 Error 事件中编写以下脚本 (该脚

14、本将在报错后触发 SystemError 事件) :MessageBox(错误号:+string(errornumber),错误为:+String(errortext)Action= ExceptionFail!对于数据窗口控件来说,如果正在运行数据或属性表达式时发生错误,且 Error 事件中没有脚本,或者参数 action 被置为 ExceptionFail!,则 PowerBuilder 首先触发 Error 事件,然后 SystemError 事件被触发;如果 SystemError 事件中也没有脚本,应用程序发生错误并终止运行。10.2 数据窗口控件的重要属性、事件和函数(2)(3)

15、 ItemError 事件该事件在用户修改了字段,然后移走焦点,但数据未能通过该列的有效性检查时触发。该事件返回值的意义如下。 0:(默认值),拒绝输入值并显示有效性检查出错信息,同时不允许移走焦点。 1:拒绝输入值,但不显示出错信息,同时不允许移走焦点。 2:接收输入值。 3:拒绝输入值,但允许移走焦点。它的参数包括: row:长整数型,表示数据行号。该行即发生改变但没有通过有效性检验的字段的行号。 dwo:dwobject,发生错误的数据窗口对象。 data:字符串型,新输入的发生改变的项的数据。例如,在 ItemError 事件中添加如下脚本,则除了长整数类型的字段可以为空外,不允许数据窗口控件中的其他字段为空,系统自动检查这些字段并为其赋值。string str_colname,str_datatypestr_colname=dwo.Namestr_datatype:dwo.ColTypeIF str_datatype20RETURN 1END CHOOSE当然,控制权限的代码只有放在服务器上才能真正有效。(2) RetrieveRow 事件RetrieveRow 事件在数据窗口每检索一条记录时触发。该事件返回值的意义为: 0:(默认值)继续随后的检索。 1:终止检索过程。当需要限制检索出的数据行数或其他条

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号