你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 专家论坛
基于POWERBUILD下的结构实现通用窗口动态连接数据窗口对象及改变窗口属性
 

摘 要:为提高程序开发效率,本文提出了通用窗口下动态连接数据窗口对象及改变窗口属性的方法。

关键字Powerbuild,结构通用窗口,动态连接,数据窗口对象

 

一、引言

Powersoft 公司推出的PowerBuilder是一种高效而快捷的集成开发环境,它提供了可视 化的、面向对象的、基于客户机服务器的开发环境,它是当前数据库前端开发工具最具有代表性的产品,尤其是其功能强劲的数据窗口控制(DataWindowObject),具有强大的数据提取能力,使开发人员大大提高了效率。

通常程序开发时,开发人员对每个功能都做一个窗口和与之配套的数据窗口对象,而笔者发现,如果没有很多特殊需求,一般录入窗口、打印窗口、查询窗口等可以定义成通用窗口,而根据需要动态地改变窗口标题或其他属性以及动态连接数据窗口对象,就能满足我们的需求,从而大大减少了我们建立窗口对象的数量,也减少了维护量,从而提高开发效率。

二、实现思路

    在某一具体应用对象中,对功能类型相同的窗口,如果没有许多特殊要求,其功能需求几乎相似,只是对数据的处理及显示格式不同,这些可以充分利用Powerbuild的强大的datawindow功能,把数据处理部分尽量放到datawindow中完成,这样就可以把功能类型相同的窗口作成通用窗口。通用窗口的属性如窗口标题、静态文本的显示可以根据需要在窗口的script中动态改变;而数据窗口对象(datawindow)及其属性如水平、垂直滚动条等也可以在窗口script中动态设定。

以通用输入窗口、通用打印窗口为例。在录入窗口中,只需有插入、删除、保存、记录指针移动等功能即可。在通用打印窗口中,一般靠日期控制报表范围,日期完全可以在Datawindow中根据不同需求设定日期检索参数,在报表窗口的script中通过Retrieve(日期检索参数1, 日期检索参数2)检索既可。

由于 OpenWithParm Opensheetwithparm打开窗口并向窗口传递参数时,PowerBuilder 只允许传递一个参数,所以必须创建一个结构,把需要传递的参数如数据窗口对象名、要改变的窗口属性等以变量的形式定义到这个结构中去。

在窗口中通过Message对象,获取结构中的数据来动态改变窗口属性、数据窗口对象及其属性。

三、实现方法

1、  在应用中定义一个结构,它是全局变量:str_dataw

wtitle  string        //窗口标题

dname string        //数据窗口对象名称

dvscrol Boolean     //垂直滚动条

stext string    //静态文本对象的text变量

2、分别在各自模块的menuclicked事件的script中通过结构动态给窗口标题、数据窗口对象,数据窗口滚动条等赋初值。

1)在标准目录录入菜单中的clicked事件定义一个结构变量实例、分别给结构赋初值、打开通用录入窗口:

close(w_input)                  //关闭通用录入窗口

str_dataw dataw             //定义一个结构变量实例

dataw. wtitle="标准录入窗口"     //改变录入窗口标题

dataw. dname="d_bookinst"        //改变数据窗口对象

dw_1. dvscrol =true                 // 改变滚动条

opensheetwithparm(w_input,dataw,parentwindow,1,layered!)   //打开通用录入窗//口并用结构向窗口传递参数

2)订购录入菜单中的clicked事件的Script

close(w_input)     

str_dataw dataw    

dataw. wtitle="订购录入窗口"

dataw. dname="d_bookin"

dw_1. dvscrol =false

opensheetwithparm(w_input,dataw,parentwindow,1,layered!)  

3)采购单报表菜单中的clicked事件的Script

close(w_reportbz)       //关闭通用打印窗口

str_dataw dataw    

dataw. wtitle="采购清单报表"

dataw.dname="d_repcaig"

dataw..stext="申购时间始止" 

opensheetwithparm(w_ reportbz, dataw,parentwindow,1,layered!)

4)图书标准发放报表菜单中的clicked事件的Script

dataw. wtitle="标准图书发放报表"

dataw. dname="d_repfaf"

dataw.stext="发放时间始止"

opensheetwithparm(w_ reportbz, dataw,parentwindow,1,layered!)

3、在通用窗口中,用程序动态地为数据窗口控件指定DataWindow Object及属性等:

1)录入通用窗口的Open事件的script:

str_dataw dataw              

dataw=message.powerobjectparm  //message对象赋值给结构变量实例

this.title= dataw. wtitle        

this.dw_1.dataobject= dataw .dname

this.dw_1. VScrollBar= dataw. dvscrol  

dw_1.settransobject(sqlca)    

dw_1.retrieve()

2)打印通用窗口的Open事件的script:

this.title= dataw. wtitle        

this.dw_1.dataobject= dataw .dname 

this.dw_1.st_1.text= dataw. stext    

通用打印窗口中的“确定”按钮中的script为:

dw_1.settransobject(sqlca)

dw_1.Retrieve(date(em_1.text), date(em_1.text))

通用打印窗口数据对象为采购单d_repcaig时,检索参数为起始申购时间、截止申购时间;在数据对象为图书标准发放d_repfaf时,检索参数为起始发放时间、截止发放时间,这些处理在Datewindow中完全可以实现。

图一:通用录入窗口的两个不用应用

 

 

图二:通用打印窗口的两个不用应用

  

四、结束语

这种方法在Powerbuild6.7.0下调试通过,笔者的多个应用软件开发项目中一直使用,它使开发程序所占的存储空间大大降低,维护工作量减少,可以极大提高程序开发效率。

参考文献

1Powerbuild应用开发技术详解     电子工业出版社

2Powerbuild7开发手册        内蒙古人民出版社

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089