打印过程中停止打印的问题

tcchong 2004-12-28 02:47:52
1 、我在报表的属性中设置了:prompt before printing ,所以在打印前弹出"打印机的文档属性窗口",我点击这个窗口的"取消"按钮仍然打印,怎样才能获得这个窗口的"确定"和"取消"按钮返回的参数,使得点击"确定"才打印,点击"取消"不打印呢.是不是需要调用api函数呢,希望能有具体例子。
2、另外,要做到打印过程中停止不再继续打印怎么处理呢?




...全文
344 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangning163 2005-01-06
  • 打赏
  • 举报
回复
你为什么不可以通过设置PrintSetup()来进行打印机和纸张的选择呢!
tcchong 2005-01-06
  • 打赏
  • 举报
回复
zhangdatou(猪头):多谢多谢。
不过,我之所以要设置prompt属性,是想在“高级”选项中选择自定义的纸张。
我做的程序中,要求客户统一使用“窄孔打印纸”,所以我在打印机的服务器属性
中自定义了一个纸张类型,调用设置prompt属性就是为了可以选择这个类型的纸张。
zhangdatou 2005-01-04
  • 打赏
  • 举报
回复
----摘要本文详细介绍了PowerBuilder中数据窗口打印输出技术,并给出了一个通用的数据窗口打印控制程序。

----关键词PowerBuilderDataWindowPrint

1.引言

----自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

打印 范围组 中“全部” 选择钮clicked事件 脚本

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
应用中使用。
jf_xs 2005-01-04
  • 打赏
  • 举报
回复
up
aichangfeng 2004-12-29
  • 打赏
  • 举报
回复
up
balloonman2002 2004-12-28
  • 打赏
  • 举报
回复
dwcontrol.PrintCancel ( )

PrintCancel ( printjobnumber )

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧