PB用户对象技术在数据窗口中的应用

  • 格式:pdf
  • 大小:125.57 KB
  • 文档页数:2

© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.netPB用户对象技术在数据窗口中的应用

ApplicationofPBUserObjectTechniqueinDataWindow

王 虹

(大连理工大学 大连 116024)

【摘 要】 根据实际的开发要求,利用PB所提供的用户对象技术实现了数据窗口中数据列的多项输入、修改及

删除。简要介绍了用户对象技术,并详细描述了该方法的具体实现过程。

【关键词】 用户对象,数据窗口,数据列,下拉列表控件,PB

ABSTRACT UserobjecttechniquefromPBisusedtorealizemultinominalinput,correctionanddeletionofdatacolumnindata

window.Userobjecttechniqueisdescribedsimplyandmoredescriptionaboutimplementationofthemethodisgiven.

KEYWORDS userobject,datawindows,datacolumn,dropdownlistcontrolunit,PB

Powerbuilder作为众多数据库前端开发工具之

一,以其友好的界面和完善的功能而深受广大开发人

员的青睐。尤其是它所提供的强大的数据窗口

(datawindow)功能,使得对数据库的各种操作如录

入、查询、删除、排序等都变得非常简单、快捷。但是数

据窗口也有其局限性。

在利用数据窗口录入数据时,一个数据列只允许

输入一个数据值。但作者在开发大连港香炉礁港口费

收管理系统时,由于其业务需要,要求对同一收费项目

允许录入多笔数据并分别显示出来以便修改,最后将

这些数据的总和作为该项目的值存入数据库。

1 解决方案

根据上述的业务要求,决定采用下拉列表控件和

用户对象相结合的方法,即powerbuilder所提供的标

准可视用户对象技术。

用户对象是封装了一组相关代码和属性、完成特

定功能的对象。用户对象一般用于完成通用的功能,只

须定义一次,就能够反复多次使用,并且修改一次,就

能把修改结果反映到所有使用该用户对象的地方。

用户对象具有下述优势:

①避免了在应用程序的不同地方编写功能相同或

相近代码的麻烦,提高了应用程序的维护性。②用户对

象可以把一组总在一起使用的可视控件组合在一起,

构成一个完成特定功能的控件,应用程序可以在需要

的地方随时使用它。③用户对象提供了构造具有一致

外观可视部件的方法。④用户对象能够把相关功能封

装在一起。⑤用户对象允许开发人员扩展某些Power2Builder系统对象(比如事务对象)的功能。

PowerBuilder的用户对象分两种类型:可视用户

对象、类用户对象。其中,可视用户对象又分为三种类

型:标准可视用户对象、定制可视用户对象和外部可视

用户对象。

标准可视可户对象是对PowerBuilder现有控件

的扩充,它在现有控件基本功能的基础上增加应用程

序需要的功能。标准可视用户对象继承了原始控件的

各种特征,包括属性、事件和函数。

因此,采用这种方法,一方面,可以利用PB的库

存控件的原有属性、事件;另一方面,又可通过编程由

用户定制其特定的功能。同时,由于用户对象具有可通

用性,从而可大大减少代码的重复,提高系统的效率。

2 实现方法

首先,新建一个标准可视用户对象(uoddlb)。

单击PowerBar上的userobject,单击New,选择

Visual󰃜Standand。

在控件选择窗口中,选中dropdownlistbox.

然后,给用户对象uoddlb的相应事件编写脚本。

定义Instance变量:intu1index,ulselect󰃗󰃗ulindex表示索引位置󰃗󰃗ulselect表示选择标志

getfocus()事件:

this.selectitem(ulindex)

selectionchanged()事件:

ifthis.selectitem(this.text,1)>0then󰃗󰃗选择已输入

的数据

ulindex=this.selectitem(this.text,1)

3 20000614收到33 王虹,女,1975年11月出生,硕士,大连理工大学电信学院硕士研究生毕业,研究方向为数据库开发、数据仓库技术。・62・ (总600) PB用户对象技术在数据窗口中的应用 2000年

© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net图1 数据录入窗口

ulselect=1 endifmodified()事件: ifulindex=0then 󰃗󰃗增加数据 ifthis.text<>’’then this.additem(this.text) endif else 󰃗󰃗对已有的数据进行修改或删除 ifulselect<>1then this.deleteitem(ulindex) ifthis.text<>’’then this.additem(this.text) endif ulindex=0 else ulselect=0 endif endif this.selectitem(ulindex)

losefocus()事件: this.selectitem(this.totalitems()) ulindex=0 ulselect=0最后,在数据录入窗口中,用uoddlb生成的复

件覆盖数据窗口的所有数据列。如图1所示。

定义窗体函数wfsave(),其功能是:分别将各数据

列下拉列表中的数据累加后,保存到数据窗口的缓冲区中。

intn,m,hreals,tdropdownlistboxddlbxforn=1to13

choosecasen case1ddlbx=ddlb1 case2ddlbx=ddlb2 case3ddlbx=ddlb3 case4ddlbx=ddlb4 case5ddlbx=ddlb5 case6ddlbx=ddlb6 case7ddlbx=ddlb7 case8ddlbx=ddlb8 case9ddlbx=ddlb9 case10ddlbx=ddlb10 case11ddlbx=ddlb11 case12

ddlbx=ddlb12 case13

ddlbx=ddlb13

endchooses=0

m=ddlbx.totalitems()

ifm>0then forh=1tom ifddlbx.selectitem(h)>0then ifddlbx.text<>’’then s=s+real(ddlbx.text) endif endif next dwbill.object.data[dwbill.getrow(),n+11]=

round(s,2)

endifnext利用上述方法,可方便地实现数据窗口中数据列

对多项数据的“接收”(按回车键可连续输入或将光标

移到该项直接输入数据)、修改(选中已输入的数据即

可直接修改)和删除(选中要删除的数据清除即可)。

上述程序在PB6.5中调试通过,并在该系统的应

用中取得了满意的效果。

参考文献

1 何军,刘红岩.PowerBuilder5.0原理与应用开发指南.北京:电子工业出版社,1999:全书

2 北京希望电脑公司.PowerBuilder6.0开发人员指南.北京:希望电脑公司,1999:全书

3 马晖.PowerBuilder7.0高级教程.北京:电子工业出版社,

1999:全书・72・第13卷 第12期 电脑开发与应用 (总601)