p> DataWindow的打印输出
在PowerBuilder应用程序的开发中,各种报表的打印功能是必不可少的。Power-Builder4.0提供了大量与打印机进行通信的内部函数,用于各种打印输出。运用这些函数,您不仅可以打印常见的DataWindow对象,还可以打印字符串、位图、图形对象,甚至是全屏。
DataWindow的两种打印方法:
在PowerBuilder中我们可以有两种方法打印DataWindows。一种最简单的方法就是直接地将DataWindow提交给打印机,另一种方法是将大量的DataWindow(或混合其他的对象)放在一起作为一个单一的打印作业提交输出。
方法一:不指定打印作业,而发送一个单一的DataWindow。将报表传给打印机输出的最简单的方式是使用DataWindow对象的Print()函数,您只需简单指明您打印的DataWindow控件的名字就可以得到该DataWindow生成的报表了。例:
dw_data.print({cancel dialog})
Print()函数不需要任何参数,但是它有一个可选参数,可以控制PowerBuilder是否显示Print Cancel对话框窗口(缺省为自动出现,如图1所示)。Cancel
dialog参数是一个布尔型变量,其缺省值为真。
一 Print:HP LaserJet HP on LPT1:
Preparing page 1 of 2
Cancel
除非特别指定,否则将在打印时缺省出现Print Cancel对话框。Print()函数还有一些格式可控制打印正文字符串,但是它们要求首先打开一个打印作业。这些格式将在后面解释。
方法二:集成多个DataWindow作为一个打印作业。您可以将提交打印的多个DataWindow作为一个单一的打印指令。为实现这一功能必须打开一个所谓打印作业(Print
job),即发送给打印机一个单一工作单元,其中可以包含多个子任务。在PowerBuilder中一个打印作业由它的作业代号唯一指定。我们使用PrintOpen({job
name})函数打开一个作业,并得到打印作业号。PrintOpen()函数有一个可选参数,就是打印作业名称,这个作业名字将作为Windows
3.x的Print Manager作业集中的名字。当您使用PrintOpen()函数时,系统将另起一页开始打印。当然在打印作业中,您还可以使用其他函数换页,比如将在后面讲述的PrintPage()函数。
在您打开了一个作业号后,就可以在这个作业内使用下列函数继续其他各种各样的打印项目。
1)在打印作业中加入字符串:
我们也可以使用另外一个与Print()函数 ⒉煌暮创蛴∽址?:
PrintText(print_job_number,string,x,y{,font_number})
这个函数将包含在string参数中的正文字符串当作一个对象进行打印。这个打印的字符串在由X,Y参数(以千分之一寸为单位)指定的坐标处开始。font_number参数是一个可选参数,缺省使用当前字型,否则font_number的值可以从0到8,0是打印机缺省的字型,1-8是使用后面讲述的PrintDefineFont()函数定义的字型。这个函数不像其他指定坐标的函数,它将改变打印光标的位置。这个函数的返回值是打印光标的新X坐标,但它不改变Y坐标。
2)在打印作业中打印对象
下面的这些函数可以使您在打开的打印作业中打印不同的对象。这些函数中的任一个指定X、Y坐标的函数都不会改变当前打印光标位置。
objectname.Print(print_job_number,x,y {,width,height})
这个函数可以将任何一个object_name指定的对象放在print_job_number定义的打印作业中打印,这个对象可以是一个窗口也可以是一个DragObject类的继承类(包括了所有的窗口控件)。X、Y参数指定了一页中的坐标,您可以指出所打印对象出现的位置(以千分之一寸为单位)。Width和Height参数是可选的参数,用来指明你所需的打印对象的宽和高(仍以千分之一寸为单位)。如果缺省,PowerBuilder将使用对象本身的尺寸打印。
PrintBitmap(print_job_number,bitmap,x,y,width,height)
这个函数将在由X,Y参数(千分之一寸为单位)指定的打印区域上打印一个位图。bitmap参数是一个包含要打印位图的文件名的字符串(例:BRUSH.BMP)。Width和Height参数指定位图显示的宽和高,这个参数并不是可选的。输入0值,意味着位图按它本身的值打印。
PrintDataWindow(print_job_number,datawindowcontrol)
这个函数将一个DataWindow控件的内容作为这个指定的打印作业的一部分来打印。由于Power-Builder使用在DataWindow对象中定义的字型,Print-DefineFont()和PrintSet-Font()函数不对其产生影响。Powersoft建议如用PrintDataWindow,那么在这个打印作业中就不需要使用其它函数。因为这个函数将使用整张纸,每一次调用PrintDataWidnow,您打印的下一项都将另起一页。
PrintLine(Print_job_number,X1,Y1,X2,Y2,thickness)
这个函数将打印一指定宽度的线。这条线将在由X1,Y1参数(以千分之一寸为单位)指定的坐标处开始,在由X2,Y2参数(也以千分之一寸为单位)指定的坐标处结束。thickness参数是一个整型变量,它指定了这条线的宽度,以千分之一寸为单位。
PrintOval(print_job_number,x,y,width,height,thickness)
这个函数打印一个椭圆(如果宽度和高度相同则形成一个圆)它的轮廓线的宽度由thickness指定。椭圆都由一个想象的边框包围,X,Y参数指定了这个界框的左上角的位置(千分之一寸为单位),width,heigh为这个边框的高和宽。
PrintRect(print_job_number,x,y,width,height,thickness)
除了它是打印一个矩形外,这个函数与PrintOval()函数完全一样。
PrintRoundRect(print_job_number,x,y,width,height,thickness)
除了它是打印一个圆角矩形外,这个函数与PrintO-val()函数完全一样。
[办公软件]在sybase中插入图片、PDF、文本文件 [办公软件]安装Sybase ASE [办公软件]linux指令大全(完整篇) [办公软件]Linux新手入门常用命令大全 [办公软件]在RedHat Linux 9里安装gaim0.80 [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法 [办公软件]Linux程序员必读:中文化与GB18030标准 [办公软件]linux指令大全 [办公软件]制作Linux启动盘的四种方法 [办公软件]Linux文件系统的反删除方法
|