VFP9的10件酷事(4)--将报表保存为图形文件

shanjuhua 2004-10-27 09:26:50
4、 将报表保存为图形文件
ReportListener 的另一种很大的用途是通过在你专门的子类中覆盖 OutputPage 方法来将一个报表保存为图形文件。可以保存的图形文件格式包括 EMF、JPEG、GIF、PNG、BMP、TIFF、以及多页的 TIFF(这种格式对于用传真发送报表来说特别有用)。 注意,在这个示例的代码中,我将 ListenerType 属性设置为了2,这意味着让你自己来控制输出,每次用参数 nDeviceType = -1 调用 OutputPage 方法就打印一页,但并不将输出发送到一个打印设备。MyReportListener 有一个自定义的 OutputPage 方法,它先检查 nDeviceType 的参数是否为 -1,然后再次调用 OutputPage 方法(给方法传递一个文件名和图形文件类型),再执行一个 NODEFAULT。这个示例在生成第一页的时候建立一个 TIFF 文件,然后将其它的页添加到同一个图形文件中去。 LOCAL olistener * 建立一个 ReportListener 的实例
olistener = CREATEOBJECT("MyTiffListener")
olistener.tifffilename = "c:\tifftest.tif" * 运行一个将会引用我们设置好了的 Listener的 报表
REPORT FORM (_samples+"solution\reports\invoice.frx") ;
OBJECT olistener RANGE 1,2 * 在浏览器中显示结果
RUN /n Explorer.exe c:\tifftest.tif DEFINE CLASS MyTiffListener AS ReportListener
tifffilename = []
listenertype = 2 && 一次一页,不输出 FUNCTION OutputPage(nPageNo, eDevice, nDeviceType)
* 由于 ListenerType 指定了 "不打印输出"
* 在报表引擎调用这个方法的时候,nDeviceType 将会是 -1
* 而我们现在则捕捉这个条件,然后自己来调用
* OutputPage 方法,调用时带上文件名和图形类型参数
IF nDeviceType = -1 ;
AND NOT EMPTY(THIS.tifffilename)
IF nPageNo = 1
* 如果是第一页,则建立TIFF文件
THIS.OutputPage(nPageNo, THIS.tifffilename, 101)
ELSE
* 否则,则向 TIFF 文件添加剩下的页
* (这段代码要运行,首先 TIFF 文件必须已经存在)
THIS.OutputPage(nPageNo, THIS.tifffilename, 201)
ENDIF
* 我们已经用需要的设置调用过 OutputPage 方法了
NODEFAULT
ENDIF
ENDDEFINE
...全文
102 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
JohnShen 2004-10-27
  • 打赏
  • 举报
回复
谢谢!
发帖
VFP

2573

社区成员

VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
帖子事件
创建了帖子
2004-10-27 09:26
社区公告
暂无公告