| 導購 | 订阅 | 在线投稿
分享
 
 
 

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

來源:互聯網  2008-06-01 01:54:35  評論

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

  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
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有