Database 版 (精华区)
发信人: lizhenguo (夸父·追日), 信区: Database
标 题: 4
发信站: 哈工大紫丁香 (2001年09月26日18:37:01 星期三), 站内信件
DataWindow的打印输出
在PowerBuilder应用程序的开发中,各种报表的打印功能是必不可少的。Power-Builder
4.0提供了大量与打印机进行通信的内部函数,用于各种打印输出。运用这些函数,您不仅
可以打印常见的DataWindow对象,还可以打印字符串、位图、图形对象,甚至是全屏。
DataWindow的两种打印方法:
在PowerBuilder中我们可以有两种方法打印DataW-indows。一种最简单的方法就是直接
地将DataWindow提交给打印机,另一种方法是将大量的DataWindow(或混合其他的对象)放
在一起作为一个单一的打印作业提交输出。
法一:不指定打印作业,而发送一个单一的DataW-indow。将报表传给打印机输出的最简单
的方式是使用DataWindow对象的Print()函数,您只需简单指明您打印的DataWindow控件
的名字就可以得到该DataWindow生成的报表了。例:
dw_data.print({cancel dialog})
Print()函数不需要任何参数,但是它有一个可选参数,可以控制PowerBuilder是否显示P
rint Cancel对话框窗口(缺省为自动出现,如图1所示)。Cancel dialog参数是一个布尔
型变量,其缺省值为真。
一 Print:HP LaserJet HP on LPT1:
Preparing page 1 of 2
Cancel
图1:除非特别指定,否则将在打印时缺省出现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坐标
。
在打印作业中打印对象
下面的这些函数可以使您在打开的打印作业中打印不同的对象。这些函数中的任一个指
定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-F
ont()函数不对其产生影响。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)
这个函数打印一个椭圆(如果宽度和高度相同则形成一个圆)它的轮廓线的宽度由thickn
ess指定。椭圆都由一个想象的边框包围,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()函数完全一样。
--
《列子·汤问》:“夸父不量力,欲追日影,逐之于隅谷之际。渴欲 得饮,赴饮河渭
。河渭不足,将走北饮大泽。未至,道渴而死。”
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.154]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.307毫秒