pb打印窗口:PB中数据窗口的精确页面打印技术

  1.引言  自PowerBuild4.0问世以来以其简洁高效集成开发环境、强大数据窗口技术、(几乎)无所不能数据库访问能力越来越受到编程人员青睐据Sybase自己统计目前全球有60万员和系统分析人员在使用他们Powerbuilder和S-designer,进行各种类型应用开发最新发布PowerBuilder6.0族系列开发工具直接支持ActiveX技术、ServerPush技术对分布式计算模型定义更加明确实现更为简便并可以利用数据窗口直接生成HTML格式文件等等所以PowerBuilder 已成为C/S模式应用和基于InterNet 模式应用主要开发工具的

  数据窗口(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应用中使用



Tags:  pb窗口 pb打印 pb数据窗口 pb打印窗口

延伸阅读

最新评论

发表评论