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,选择
VisualStandand。
在控件选择窗口中,选中dropdownlistbox.
然后,给用户对象uoddlb的相应事件编写脚本。
定义Instance变量:intu1index,ulselectulindex表示索引位置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)