4、 將報(bào)表保存為圖形文件
ReportListener 的另一種很大的用途是通過在你專門的子類中覆蓋 OutputPage 方法來將一個(gè)報(bào)表保存為圖形文件?梢员4娴膱D形文件格式包括 EMF、JPEG、GIF、PNG、BMP、TIFF、以及多頁的 TIFF(這種格式對(duì)于用傳真發(fā)送報(bào)表來說特別有用)。 注意,在這個(gè)示例的代碼中,我將 ListenerType 屬性設(shè)置為了2,這意味著讓你自己來控制輸出,每次用參數(shù) nDeviceType = -1 調(diào)用 OutputPage 方法就打印一頁,但并不將輸出發(fā)送到一個(gè)打印設(shè)備。MyReportListener 有一個(gè)自定義的 OutputPage 方法,它先檢查 nDeviceType 的參數(shù)是否為 -1,然后再次調(diào)用 OutputPage 方法(給方法傳遞一個(gè)文件名和圖形文件類型),再執(zhí)行一個(gè) NODEFAULT。這個(gè)示例在生成第一頁的時(shí)候建立一個(gè) TIFF 文件,然后將其它的頁添加到同一個(gè)圖形文件中去。 LOCAL olistener * 建立一個(gè) ReportListener 的實(shí)例
olistener = CREATEOBJECT("MyTiffListener")
olistener.tifffilename = "c:\tifftest.tif" * 運(yùn)行一個(gè)將會(huì)引用我們?cè)O(shè)置好了的 Listener的 報(bào)表
REPORT FORM (_samples+"solution\reports\invoice.frx") ;
OBJECT olistener RANGE 1,2 * 在瀏覽器中顯示結(jié)果
RUN /n Explorer.exe c:\tifftest.tif DEFINE CLASS MyTiffListener AS ReportListener
tifffilename = []
listenertype = 2 && 一次一頁,不輸出 FUNCTION OutputPage(nPageNo, eDevice, nDeviceType)
* 由于 ListenerType 指定了 "不打印輸出"
* 在報(bào)表引擎調(diào)用這個(gè)方法的時(shí)候,nDeviceType 將會(huì)是 -1
* 而我們現(xiàn)在則捕捉這個(gè)條件,然后自己來調(diào)用
* OutputPage 方法,調(diào)用時(shí)帶上文件名和圖形類型參數(shù)
IF nDeviceType = -1 ;
AND NOT EMPTY(THIS.tifffilename)
IF nPageNo = 1
* 如果是第一頁,則建立TIFF文件
THIS.OutputPage(nPageNo, THIS.tifffilename, 101)
ELSE
* 否則,則向 TIFF 文件添加剩下的頁
* (這段代碼要運(yùn)行,首先 TIFF 文件必須已經(jīng)存在)
THIS.OutputPage(nPageNo, THIS.tifffilename, 201)
ENDIF
* 我們已經(jīng)用需要的設(shè)置調(diào)用過 OutputPage 方法了
NODEFAULT
ENDIF
ENDDEFINE
本文導(dǎo)航
- 第1頁: 首頁
- 第2頁: 文本框自動(dòng)完成
- 第3頁: 使用新的報(bào)表引擎來建立 HTML 或者 XML
- 第4頁: 組合多個(gè) ReportListener 以提供多種輸出
- 第5頁: 將報(bào)表保存為圖形文件
- 第6頁: 使用新的超小型二進(jìn)制索引
- 第7頁: 用新的ICASE()函數(shù)一行搞定
- 第8頁: 停靠你的表單
- 第9頁: 使用新的數(shù)據(jù)瀏覽面板
- 第10頁: 為了能使用戶更好的對(duì)數(shù)據(jù)類型進(jìn)行控制
- 第11頁: 超級(jí)SYS
- 第12頁: 控件的Anchor屬性
- 第13頁: 自定義Memo編輯窗口
- 第14頁: 畫多邊形