您的位置:首页 > 其它

数据窗口打印详解

2015-06-24 13:37 302 查看

数据窗口打印详解

PowerBuilder中提供了两种常用的打印数据窗口的方法,一种是使用函数print,使用该函数可以由DataWindow自动维护打印作业;另一种是使用函数PrintDatawindow,该函数需要脚本来维护打印作业。使用打印作业应该首先启动打印作业,然后发送数据到打印机,最后关闭打印作业。典型脚本模式如下:

  Long ll_job

  Ll_job = PrintOpen("数据窗口打印")

  //进行打印相关项目的设定

  //发送打印内容

  PrintClose(ll_job)//关闭打印作业

  1、启动打印作业

  PrintOpen函数用来打开一个作业,并返回当前可以使用的打印作业号,该打印作业号可以标识当前的打印工作。该函数的语法是:

  PrintOpen ( { jobname } )

  如果发生错误,该函数返回-1。打印作业名称是可选的,名字在打印队列中。在打印作业的最后必须关闭打印作业,使PowerBuilder和Windows清除打印作业所占用的所有资源。因此,每个启动作业的语句都有一个关闭作业的语句相对应。

  2、关闭打印作业

  有两个函数可以用来关闭打印作业。PrintClose()函数把当前页传送给打印机,并关闭当前打印作业。语法格式为:

  PrintClose(printjobnumber)

  函数PrintCancel()取消打印作业并删除当前的打印文件。这个函数可以与Print或者PrintDataWindow()函数组合使用。用于PrintDatawindow()的语法是:

  DatawindowControl.PrintCancel()

  用于Print()的语法是:

  PrintCancel(printjobnumber)

  PrintClose()函数和PrintCancel()函数是互相排斥的,成功调用过一个以后,不要在没有再次打开打印作业时调用另一个函数。

  3、PrintDatawindow函数

  该函数是以单个打印作业的形式打印数据窗口控件

中的内容。PowerBuilder使用数据窗口对象中定义的字体和布局进行打印。用这个函数可以在一个打印作业中打印多个数据窗口,但是每个数据窗口控件都从新的一页开始打印;如果要让几个数据窗口打印在同一页中,则需要利用底层的打印函数或将要打印在同一页中的数据窗口,创建成一个composite显示样式的数据窗口。PrintDatawindow函数的语法是:

  PrintDatawindow(printjobnumber,datawindow)

  其中,printjobnumber是PrintOpen函数返回的打印作业号,datawindow是要打印的数据窗口控件的名称。除了能够和Printopen()、PrintClose()函数共同使用外,其他函数都不能和PrintDatawindow共同使用。下面是一个完整地使用函数PrintDatawindow()进行数据窗口打印的例子,该例子中同时打印三个数据窗口:

  Long ll_job

  Ll_job = PrintOpen("数据窗口打印")

  PrintDatawindow(ll_job,dw_1)

  PrintDatawindow(ll_job,dw_2)

  PrintDatawindow(ll_job,dw_3)

  PrintClose(ll_job)//关闭打印作业

  在一个打印作业中同时打印多个数据窗口时,有时需要页码连续计数。如果使用composite类型的数据窗口就没有必要考虑这个问题了,打印单个的数据窗口如何解决这个问题呢?首先在应用中定义一个全局变量,用来保存当前已经打印过的数据窗口的页号:

  int gi_pageno

  定义一个函数f_pageno(可以是全局函数,也可以是窗口函数)用来返回前面已经打印过的页号:

  Return gi_pageno

  在数据窗口对象中放置计算字段引用该函数,计算字段如下定义:

  page() String(f_get_pageno())

  然后在数据窗口的PrintPage事件中修改该变量,以便记录每个数据窗口打印了多少页。

  gi_pageno = gi_pageno 1

  在第一个要打印的数据窗口的PrintStart事件中编写如下脚本,以便在重新开始打印作业时,页号重新开始计数:

  gi_pageno=0

  在其他要打印的数据窗口的PrintStart事件中编写脚本,使计算字段更新:

  dw_1.Modify("Page_c.Expression= ‘String( page() f_get_pageno())‘")

  上面的过程可能感觉到有些烦琐。实际上脚本很简单,定义一个全局变量和一个函数,在数据窗口对象上放置一个计算字段,在数据窗口的printstart、printpage事件中编写脚本。

  4、Print函数

  该函数是一个通用的函数,可以用来打印PowerBuilder中许多可视对象。下面介绍打印数据窗口时的语法,格式如下:

  datawindowname.Print ( { canceldialog } )

  datawindowname为要打印的数据窗口控件

名称,canceldialog是一个boolean型变量,指示在打印时是否显示一个无模式的可以随时取消打印的窗口,该变量缺省为True。该函数正确执行则返回1,执行过程中发生错误则返回-1。

  虽然该函数和PrintDatawindow一样都可以打印数据窗口,但是它们之间是有区别的。Print函数使用设置在数据窗口对象的打印规范来打印数据窗口,而PrintDatawindow函数使用打印机当前的设置来打印数据窗口。本节开始介绍的一个简单的打印编程,在调用函数printsetup时虽然可以设置打印机,但不是所有的设置都可以在调用Print函数来打印时体现出来,只有那些在数据窗口对象中没有指出的可以起作用。因为按钮“打印设置”仅仅调用函数printsetup(),没有修改数据窗口对象的打印设置。后面章节详细介绍开发一个通用的可以设置打印机、打印份数、打印方向、打印纸张、打印哪些页面等等很多选项的通用的打印配置窗口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: