数据窗口(DataWindow)是PowerBuilder专利也是PowerBuilder应用核心和精华所在.PowerBuilder通过丰富属性和来控制数据窗口显示和数据操纵但对数据窗口打印支持似乎过于简单只有个Pr 窗口和个PrDataWindowPowerScript并且这两个功能几乎都是样都只简单地将选定数据窗口原样送入打印队列本身 不具备页面控制功能为此很多员抱怨这是PowerBuilder个缺陷其实PowerBuilder对打印功能支持样十分周到全面只不过应用场合区别需要用户自行加以选择
以下是对PowerBuilder打印控制功能详尽分析并介绍个实用数据窗口页面控制
2.Powerbuilder实现动态页面控制途径
PowerBuilder数据窗口有对Describe 和Mody,用于动态描述和修改数据窗口结构和其它相关结合可以完成动态生成数据窗口、任意改变数据窗口显示方式、修改打印属性等这两个是控制和修改数据窗口核心其使用思路方法如下:
1)Describe获取数据窗口特定属性值
语法:dwcontrol.Describe(propertylist)
参数:dwcontrol数据窗口(或datastore)控 件名
propertylist用串表示数据窗口属性
返回值:返回个表示属性串
数据窗口属性值也可以用dwcontrol.object.Datawindow.property来完成直接取得
2)Mody修改数据窗口特定属性
语法:dwcontrol.Mody(mod)
参数:dwcontroldwcontrol数据窗口(或datastore)控 件名
mod用串表示数据窗口属性
返回值:如果执行成功返回“1”
和Describe类似 修改数据窗口属性可以用:
dwcontrol.object.Datawindow.property=value直 接赋值
3)和打印有关数据窗口属性
数据窗口属性中和打印有关有24个其中实现打印页面控制几个属性是:
Copies:打印份数
Filename:如果不为空表示输出到文件文件名
Orientation:打印方向1=横向2=纵 向
Page.Range:输出页范围要打印1,2,和5到10 页,输入: "1,2,5-10"Page.RangeInclude:本 次打印范围0=全部1= 偶数页2= 奇数页Paper.Size:纸张大小
Scale:打印比例
中利用Mody设置好这些属性后即可实现动态修改数据窗口目再datawindow.pr完成最后打印输出
个通用Datawindow打印控制
将数据窗口中报表在打印机上输出是PowerBuilder应用开发过程中必不可少功能作为例子这里提供个使用上述思路方法研制通用打印控制窗口用以替代Prompt属性所提供Pr窗口实现汉化界面并且可被自行修改扩充为了书写简单中采用直接赋值方式修改属性
例子变量:
datawindowdw_pr
prername,name,port
窗口open 事件脚 本:dw_pr=Message.PowerObjectParm
prername=dw_pr.Object.Datawindow.Prer
name=left(prername,pos(prername,"on")-1)
port=right(prername,len(prername)-pos(prername,"on")-1)
plb_prername.additem(name,1)
st_portname.text=port
“设置” 按钮clicked事件脚本
Integercode
Code=prSetup
Ifcode=1then
prername=dw_pr.Object.Datawindow.Prer
name=left(prername,pos(prername,"on")-1)
port=right(prername,len(prername)-pos(prername,"on")-1)
plb_prername.additem(name,1)
st_portname.text=port
end
打印范围组中“全部”选择钮clicked事件 脚本dw_pr.object.DataWindow.Pr.Range=''
sle_1.enabled=false
sle_2.enabled=false
sle_3.enabled=false
“页数” 栏后sle_2单行文本编辑框Modied事件 脚本
dw_pr.object.DataWindow.Pr.Page.Range=sle_1.text +"-"+sle_2.text
“自定 义”栏后sle_3单行文 本编辑 框Modied事件脚本
dw_pr.object.DataWindow.Pr.Page.Range=sle_3.text
打印份中份数单行文本编辑框Modied事件脚本dw_pr.Object.DataWindow.Pr.Copies=eger(this.text)
“全部” 选择钮Cliecked事件 脚本
dw_pr.Object.DataWindow.Pr.Page.Range =0
“奇数” 选择钮Cliecked事件 脚本
dw_pr.Object.DataWindow.Pr.Page.Range =1
“偶数” 选择钮Cliecked事件 脚本
dw_pr.Object.DataWindow.Pr.Page.Range =2
“确认” 命令按 钮Clicked事件脚本
longjob
IsValid(dw_pr)then
job=PrOpen
PrDataWindow(job,dw_pr)
PrClose(job)
close(parent)
end
“取消” 命令按 钮Clicked事件脚本close(parent)
窗口思路方法:在其它带有数据窗口窗口中使用OpenWithParm(w_pr_,dwname) 即可其中w_pr_为本窗口名dwname为要打印数据窗口该是个通用打印控制可在任何版本PowerBuilder应用中使用
最新评论