自定義快速報表的打印預覽窗口

QuickReport2.0中提供的默 認打印預覽窗口是英文界面的,假如開發的中文軟件中帶有這種英文顯示, 不免有些小小的缺憾。因此有必要實現中文界面的打印預覽窗口。但是Delphi提供的源代碼中並沒有打印預覽窗口.PAS源文件,這就無法直接修改源 碼,只能全部自己編程實現。經多次實踐,筆者模擬實現了與默認預覽窗口外觀類似,功能相同的打印預覽窗口。步驟如下:

1.新建一個窗體,設置Name爲MyPreview。

2.在窗體上添加一Toolbar控件, 模擬默認預覽窗口創建相應的Toolbutton,並設置各按鈕的Hint提示。

3.添加一Panel控件,對齊方式置 爲alBottom。再在此Panel上放一ProgressBar(左對齊)和Panel(右對齊), 分別顯示報表裝載進度和其他提示信息。

4.添加QRPreview控件,對齊方式 置爲alClient。

5.添加OpenDialog,設置Filter 屬性爲*.QR;添加SaveDialog,設置Filter屬性爲*.QR*.TXT*.HTM*.CSV, 設置DefaultExt屬性爲*.QR。

6.雙擊各個Toolbutton,輸入相 應代碼。

可以按以下方法調用自定義預覽 窗口。

重載TQuickRep的OnPreview事件, 輸入如下代碼:

procedureTRptForm.RptFormPreview(Sender:TObject);

begin

withTMyPreview.Create(Application)do

begin

QRPreview1.QRPrinter:=TQRPrinter(Sender);

CurRep:=self;

Show;

end;

end;

附各成員方法的具體實現:

unitMyprv;

interface

uses

Windows,Messages,SysUtils,Classes,Graphics,Controls, Forms,Dialogs,ComCtrls,ToolWin,qrprntr,Quickrpt,StdCtrls, ExtCtrls,qrextra,qrHtml;

type

TMyPreview=class(TForm)

QRPreview1:TQRPreview;

ToolBar1:TToolBar;

(其余成員變量和成員方法聲明略。)

private

{Privatedeclarations}

FPageCount:integer;// 生成報表的總頁數

public

{Publicdeclarations}

CurRep:TQuickRep; //所預覽的報表

procedureUpdatePanelShow;

end;

implementation

{$R*.DFM}

procedureTMyPreview.UpdatePanelShow;

begin//更新顯示

Panel2.Caption:=第+inttostr(QRPreview1. eNumber)+ 頁總+inttostr(FPageCount)+頁;

end;

procedureTMyPreview.ToolButton2Click(Sender:TObject);

begin//ZoomToFit縮放至全屏

QRPreview1.ZoomToFit;

end;

procedureTMyPreview.ToolButton3Click(Sender:TObject);

begin//ZoomTo100%縮放至實際大小

QRPreview1.Zoom:=100;

end;

procedureTMyPreview.ToolButton4Click(Sender:TObject);

begin//ZoomToWidth縮放至頁寬

QRPreview1.ZoomToWidth;

end;

procedureTMyPreview.ToolButton6Click(Sender:TObject);

begin//Firstpage

QRPreview1.PageNumber:=1;

UpdatePanelShow;

end;

procedureTMyPreview.ToolButton8Click(Sender:TObject);

begin//priorpage

QRPreview1.PageNumber:=QRPreview1.PageNumber+1;

UpdatePanelShow;

end;

procedureTMyPreview.ToolButton7Click(Sender:TObject);

begin//nextpage

QRPreview1.PageNumber:=QRPreview1.PageNumber1;

ifQRPreview1.PageNumber=0then

QRPreview1.PageNumber:=1;

UpdatePanelShow;

end;

procedureTMyPreview.ToolButton9Click(Sender:TObject);

begin//Lastpage

QRPreview1.PageNumber:=FPageCount;

UpdatePanelShow;

end;

procedureTMyPreview.QRPreview1PageAvailable(Sender:TObject; PageNum:Integer);

begin//getpagecount

FPageCount:=PageNum;

UpdatePanelShow;

end;

procedureTMyPreview.FormClose(Sender:TObject;varAction:TCloseAction);

begin

CurRep:=nil;

Action:=caFree;

end;

procedureTMyPreview.ToolButton14Click(Sender:TObject);

begin//closethewindow

Close;

end;

procedureTMyPreview.ToolButton11Click(Sender:TObject);

begin//printsetup

QRPreview1.QRPrinter.PrintSetup;

end;

procedureTMyPreview.ToolButton13Click(Sender:TObject);

begin//print

QRPreview1.QRPrinter.Print;

end;

procedureTMyPreview.ToolButton16Click(Sender:TObject);

begin//savebutton

ifSaveDlg1.Executethen

begin

if(SaveDlg1.FIlterIndex $#@60;$#@62;1)and(CurRep=nil)then

Exit;

caseSaveDlg1.FilterINdexof

1://*.QR

QRPreview1.QRPrinter.Save(SaveDlg1.FileName);

2://*.TXT

CurRep.EXPortToFilter(TQRAsciiExportFilter.Create(SaveDlg1.FileName));

3://*.HTM

CurRep.ExportToFilter(TQRHTMLExportFilter.Create(SaveDlg1.FileName));

4: //*.CSV

CurRep.ExportToFilter(TQRCSVExportFilter.Create(SaveDlg1.FileName));

end;

end;

end;

procedureTMyPreview.ToolButton17Click(Sender:TObject);

begin//loadbutton

ifOpenDlg1.Executethen

QRPreview1.QRPrinter.Load(OpenDlg1.FileName);

end;

procedureTMyPreview.QRPreview1ProgressUpdate(Sender:TObject; Progress:Integer);

begin//updageprogressbar

ProgressBar1.Position:=Progress;

end;

procedureTMyPreview.SaveDlg1TypeChange(Sender:TObject);

begin//setDefaultExtpropertyofSavedialog

withSaveDlg1do

caseFilterIndexof

0: DefaultExt:=.QR;

1: DefaultExt:=.TXT;

2: DefaultExt:=.HTM;

3: DefaultExt:=.CSV;

end;

end;

end.//endofUnit

自定義快速報表的打印預覽窗口
自定義快速報表的打印預覽窗口   Quick Report 2.0 中 提 供 的 默 認 打 印 預 覽 窗 口 是 英 文 界 面 的, 如 果 開 發 的 中 文 軟 件 中 帶 有 這 種 英 文 顯 示, 不 免 有 些 小 小 的 缺 憾。 因 此 有...查看完整版>>自定義快速報表的打印預覽窗口
 
在打印或打印預覽前如何獲取報表頁數
摘要:在打印或打印預覽前如何獲取報表頁數我們有時需要在打印前獲取報表的打印頁數, 比如我們需要在頁眉或頁腳中打印“共 xx 頁 第 xx 頁”,那如何實現呢? QuickRep生成Report之前,我們是無法得知報表頁數的,而...查看完整版>>在打印或打印預覽前如何獲取報表頁數
 
在打印或打印預覽前如何獲取報表頁數
我們有時需要在打印前獲取報表的打印頁數, 比如我們需要在頁眉或頁腳中打印“共 xx 頁 第 xx 頁”,那如何實現呢? QuickRep生成Report之前,我們是無法得知報表頁數的,而QuickReport是在打印或打印預覽時才生成報表...查看完整版>>在打印或打印預覽前如何獲取報表頁數
 
VFP 8.0 中實現多種自定義紙張格式的報表打印
VFP 8.0 中實現多種自定義紙張格式的報表打印 作者:徐小棟 摘要:本文敘述了在VFP8.0開發的應用程序中,利用報表設計器設計的各種非WINDOWS標准頁面大小的報表,在WIN2000/XP下如何打印的問題。通過在WIN2000/XP的&...查看完整版>>VFP 8.0 中實現多種自定義紙張格式的報表打印
 
巧用注冊表自定義Win7預覽窗口大小-Windows7
巧用注冊表自定義Win7預覽窗口大小-Windows7
  Windows7操作系統已經發布一段時間了,雖然大部分用戶對它的絢麗效果表示了滿意,但仍有一些用戶希望Windows7在細節方面能更具“彈性”。近期就有不少用戶抱怨Windows7的任務欄預覽窗口尺寸太小,系統也未提供這...查看完整版>>巧用注冊表自定義Win7預覽窗口大小-Windows7
 
PowerBuilder中實現數據窗口打印預覽通用方法
  我們在文字處理過程中,常常在打印前要預覽,以便控制打印效果,特別在數據打印中要有選擇地打印頁面,更需要預覽。PowerBuilder提供了程序開發過程中的數據打印預覽,下面介紹在程序應用中實現打印預覽通用方法...查看完整版>>PowerBuilder中實現數據窗口打印預覽通用方法
 
用FASTREPORT實現WEB應用中自定義報表
用FASTREPORT實現WEB應用中自定義報表 用FASTREPORT實現WEB應用中自定義報表 開發WEB應用系統通常都會遇到報表打印問題。簡單應用可利用IE的頁面打印功能,利用HTML標簽控制格式來實現。但複雜的業務型應用...查看完整版>>用FASTREPORT實現WEB應用中自定義報表
 
用FASTREPORT實現WEB應用中自定義報表
開發WEB應用系統通常都會遇到報表打印問題。簡單應用可利用IE的頁面打印功能,利用HTML標簽控制格式來實現。但複雜的業務型應用系統,報表不僅是組成應用的重要部分,還常常是相當複雜的。現在很多應用系統都要求提供...查看完整版>>用FASTREPORT實現WEB應用中自定義報表
 
漢化 Delphi6.0 的報表預覽器
Delphi 語言以其高效、簡單和強大的功能受到廣大程序員的推崇。但是,直到最近推出的6.0版,由于它們都是英文版,所以用 Delphi開發數據庫應用程序時,其報表預覽控件在界面上顯示的提示信息全都是英文字符,這對于開...查看完整版>>漢化 Delphi6.0 的報表預覽器
 
 
回到王朝網路移動版首頁