文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» PowerBuilder » 数据窗口打印完后出纸太多       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [讨论] 数据窗口打印完后出纸太多  ( 查看:254  回复:3 )   
 
hkqp
新新人类  点击可查看详细



帖子 2
精华 0
无忧币 10
积分 3
阅读权限 20
注册日期 2008-6-19
最后登录 2008-8-14 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-19 17:11   标题:数据窗口打印完后出纸太多
上一帖 |
数据窗口打印完后出纸太多(部分打印机),试好多方法,都不得其法,还望高人指点

[ 本帖最后由 hkqp 于 2008-6-19 17:21 编辑 ]



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-6-19 17:111楼
[ 顶部 ]
 
hkqp
新新人类  点击可查看详细



帖子 2
精华 0
无忧币 10
积分 3
阅读权限 20
注册日期 2008-6-19
最后登录 2008-8-14 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-19 17:18 
PB6中可以用按行打印的方法,来控制走纸,但PB9还用原来的方法就行不通了



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-6-19 17:182楼
[ 顶部 ]
 
特爱蚂蚁
管理员  点击可查看详细


诚信兄弟   行业勋章   技术勋章   管理员专用   十二生肖之牛  
帖子 1629
精华 3
无忧币 3236
积分 1547
阅读权限 255
来自 (保密)
注册日期 2008-6-3
最后登录 2008-10-8 在线

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

  数据窗口(DataWindow)是PowerBuilder的专利,也是PowerBuilder应用程序的核心和精华所在.PowerBuilder通过丰富的属性和函数来控制数据窗口的显示和数据操纵,但对数据窗口的打印支持似乎过于简单,只有一个Print() 窗口函数和一个PrintDataWindowPowerScript函数,并且这两个函数的功能几乎都是一样,都只简单地将选定数据窗口原样送入打印队列,本身 不具备页面控制功能。为此很多程序员抱怨这是PowerBuilder的一个缺陷,其实,PowerBuilder对打印功能的支持一样十分周到全面,只不过应用场合不同,需要用户自行加以选择。

  以下是对PowerBuilder打印控制功能的详尽分析,并介绍一个实用的数据窗口页面控制程序。

  2.Powerbuilder实现动态页面控制的途径

PowerBuilder数据窗口有一对函数Describe 和Modify,用于动态描述和修改数据窗口结构,与其它相关函数结合可以完成动态生成数据窗口、任意改变数据窗口显示方式、修改打印属性等。这两个函数是控制与修改数据窗口的核心函数,其使用方法如下:

  1)Describe获取数据窗口特定属性值

   语法:dwcontrol.Describe(propertylist)

   参数:dwcontrol数据窗口(或datastore)控 件名。

  propertylist用字符串表示的数据窗口属性。

   返回值:返回一个表示属性的字符串。

   数据窗口属性值也可以用dwcontrol.object.Datawindow.property来完成直接取得。

  2)Modify修改数据窗口特定属性

   语法:dwcontrol.Modify(modstring)

   参数:dwcontroldwcontrol数据窗口(或datastore)控 件名。

  modstring用字符串表示的数据窗口属性。

   返回值:如果函数执行成功返回“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:打印比例。

  程序中利用Modify函数设置好这些属性后,即可实现动态修改数据窗口的目的,再调用datawindow.print()函数,完成最后的打印输出。



  一个通用Datawindow打印控制程序


  将数据窗口中的报表在打印机上输出是PowerBuilder应用程序开发过程中必不可少的功能,作为例子,这里提供一个使用上述方法研制的通用打印控制窗口,用以替代Prompt属性所提供的Print窗口,实现汉化界面,并且可被自行修改扩充。为了书写简单,程序中采用直接赋值的方式修改属性。

  实例变量:

datawindowdw_print

stringprintername,name,port



  窗口open 事件脚 本:

dw_print=Message.PowerObjectParm

printername=dw_print.Object.Datawindow.Printer

name=left(printername,pos(printername,"on")-1)

port=right(printername,len(printername)-pos(printername,"on")-1)

plb_printername.additem(name,1)

st_portname.text=port

“设置” 按钮clicked事件脚本

Integercode

Code=printSetup()

Ifcode=1then

printername=dw_print.Object.Datawindow.Printer

name=left(printername,pos(printername,"on")-1)

port=right(printername,len(printername)-pos(printername,"on")-1)

plb_printername.additem(name,1)

st_portname.text=port

endif


dw_print.object.DataWindow.Print.Range=''

sle_1.enabled=false

sle_2.enabled=false

sle_3.enabled=false

“页数” 栏后sle_2单行文本编辑框Modified事件 脚本

dw_print.object.DataWindow.Print.Page.Range=sle_1.text +"-"+sle_2.text

“自定 义”栏后sle_3单行文 本编辑 框Modified事件脚本

dw_print.object.DataWindow.Print.Page.Range=sle_3.text



  打印份数组中份数单行文本编辑框Modified事件脚本

dw_print.Object.DataWindow.Print.Copies=integer(this.text)


  “全部” 选择钮Cliecked事件 脚本

dw_print.Object.DataWindow.Print.Page.Rangeinclude =0


  “奇数” 选择钮Cliecked事件 脚本

dw_print.Object.DataWindow.Print.Page.Rangeinclude =1


  “偶数” 选择钮Cliecked事件 脚本

dw_print.Object.DataWindow.Print.Page.Rangeinclude =2


  “确认” 命令按 钮Clicked事件脚本

longjob

ifIsValid(dw_print)then

job=PrintOpen()

PrintDataWindow(job,dw_print)

PrintClose(job)

close(parent)

endif



  “取消” 命令按 钮Clicked事件脚本

close(parent)


  窗口调用方法:在其它带有数据窗口的窗口中,使用OpenWithParm(w_print_set,dwname) 即可,其中w_print_set为本窗口名,dwname为要打印的数据窗口。该程序是一个通用打印控制程序,可在任何版本的PowerBuilder应用中使用。


希望可以帮到你...



善用论坛论坛搜索功能会使您事半功倍 ...
建议大家发帖前先抬头看看整个论坛和板块的置顶帖了解论坛各项最新制度 ...
请选用高效的沟通方式来和大家沟通 ...同时应该具备一些提问的智慧 ...
勤劳致富,无忧币不再是难题 ...
2008-6-19 17:243楼
[ 顶部 ]
 
ydg1024
新新人类  点击可查看详细



十二生肖之鼠   天蝎座   行业勋章   技术勋章   诚信兄弟  
帖子 61
精华 0
无忧币 22
积分 114
阅读权限 20
来自 (保密)
注册日期 2007-1-11
最后登录 2008-8-25 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-6-30 13:36 
你用的是不是针式打印机?链式纸?想打完即停?

如果是的话,自定义打印格式就行,也就是定义页长!



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-6-30 13:364楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号