被公司劝退有什么补偿:数据窗口打印详解

来源:百度文库 编辑:中财网 时间:2024/04/27 23:59:09
数据窗口打印详解

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(),没有修改数据窗口对象的打印设置。后面章节详细介绍
开发
一个通用的可以设置打印机、打印份数、打印方向、打印纸张、打印哪些页面等等很多选项的通用的打印配置窗口。