本人前几天买了本《程序员增值合订本》,上册的第200页《深入QuickRep》一文的第二部分“自定义预览窗口”,我有几个疑问:
1.“......,因此需要引用QuickRpt单元和QRPrntr单元 Use QuickRpt,QRPrntr;”
那两个要在哪里引用;
2."然后重载showmodal函数...TForm2.showmodal..."
showmodal函数要怎么用;
3.“因此这个过程只能放在QuickRep的opPreview事件中去做,具体代码如下...”
那么Tform2.onPreview过程是怎么定义的谢谢!
1.“......,因此需要引用QuickRpt单元和QRPrntr单元 Use QuickRpt,QRPrntr;”
那两个要在哪里引用;
2."然后重载showmodal函数...TForm2.showmodal..."
showmodal函数要怎么用;
3.“因此这个过程只能放在QuickRep的opPreview事件中去做,具体代码如下...”
那么Tform2.onPreview过程是怎么定义的谢谢!
unit Preview;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, QRPrntr, ComCtrls, ImgList, ToolWin, StdCtrls, Buttons;type
TPreviewForm = class(TForm)
QRPreview1: TQRPreview;
StatusBar1: TStatusBar;
ToolBar1: TToolBar;
ZoomFitButton: TToolButton;
Zoom100Button: TToolButton;
ZoomWidthButton: TToolButton;
ImageList1: TImageList;
ToolButton4: TToolButton;
ShowBox: TComboBox;
ToolButton5: TToolButton;
FirstButton: TToolButton;
PirorButton: TToolButton;
NextButton: TToolButton;
LastButton: TToolButton;
PrintButton: TToolButton;
CloseBtn: TBitBtn;
ToolButton11: TToolButton;
ToolButton1: TToolButton;
PrintSetupBtn: TToolButton;
ToolButton2: TToolButton;
procedure ShowBoxChange(Sender: TObject);
procedure ZoomFitButtonClick(Sender: TObject);
procedure Zoom100ButtonClick(Sender: TObject);
procedure ZoomWidthButtonClick(Sender: TObject);
procedure PrintButtonClick(Sender: TObject);
procedure FirstButtonClick(Sender: TObject);
procedure PirorButtonClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure NextButtonClick(Sender: TObject);
procedure QRPreview1PageAvailable(Sender: TObject; PageNum: Integer);
procedure LastButtonClick(Sender: TObject);
procedure ShowBoxKeyPress(Sender: TObject; var Key: Char);
procedure PrintSetupBtnClick(Sender: TObject);
procedure CloseBtnClick(Sender: TObject);
procedure QRPreview1ProgressUpdate(Sender: TObject; Progress: Integer);
private
{ Private declarations }
FPage:Integer;
FLastPage:Integer;
procedure ShowPage;
public
{ Public declarations }
end;var
PreviewForm: TPreviewForm;implementation{$R *.DFM}procedure TPreviewForm.ShowBoxChange(Sender: TObject);
var
i:integer;
ZoomStr:String;
begin
i:=Pos('%',ShowBox.Text);
if i>0 then begin
ZoomStr:=Copy(ShowBox.Text,1,i-1);
QRPreView1.Zoom:=StrToInt(ZoomStr);
end;
StatusBar1.Panels[0].Text:=ShowBox.Text;
end;procedure TPreviewForm.ZoomFitButtonClick(Sender: TObject);
begin
QRPreView1.ZoomToFit;
StatusBar1.Panels[0].Text:=ZoomFitButton.Hint;
end;procedure TPreviewForm.Zoom100ButtonClick(Sender: TObject);
begin
QRPreView1.Zoom:=100;
StatusBar1.Panels[0].Text:=Zoom100Button.Hint;
end;procedure TPreviewForm.ZoomWidthButtonClick(Sender: TObject);
begin
QRPreView1.ZoomToWidth;
StatusBar1.Panels[0].Text:=ZoomWidthButton.Hint;
end;procedure TPreviewForm.PrintButtonClick(Sender: TObject);
begin
QRPreView1.QRPrinter.Print;
end;procedure TPreviewForm.FirstButtonClick(Sender: TObject);
begin
QRPreView1.PageNumber:=1;
FPage:=1;
ShowPage;
end;procedure TPreviewForm.PirorButtonClick(Sender: TObject);
begin
if FPage>1 then FPage:=FPage-1;
QRPreView1.PageNumber:=FPage;
ShowPage;
end;procedure TPreviewForm.FormShow(Sender: TObject);
begin
FPage:=1;
QRPreView1.ZoomToWidth;
StatusBar1.Panels[0].Text:=ZoomWidthButton.Hint;
end;procedure TPreviewForm.NextButtonClick(Sender: TObject);
begin
if FPage<FLastPage then inc(FPage);
QRPreView1.PageNumber:=FPage;
ShowPage;
end;procedure TPreviewForm.QRPreview1PageAvailable(Sender: TObject;
PageNum: Integer);
begin
FLastPage:=PageNum;
ShowPage;
end;procedure TPreviewForm.LastButtonClick(Sender: TObject);
begin
QRPreView1.PageNumber:=FLastPage;
FPage:=FLastPage;
ShowPage;
end;procedure TPreviewForm.ShowPage;
begin
StatusBar1.Panels[1].Text:='第'+IntToStr(FPage)+'页 共'+IntToStr(FLastPage)+'页';
end;procedure TPreviewForm.ShowBoxKeyPress(Sender: TObject; var Key: Char);
var
i:integer;
ZoomStr:String;
begin
if Key=#13 then begin
try
i:=Pos('%',ShowBox.Text);
if i>0 then
ZoomStr:=Copy(ShowBox.Text,1,i-1)
else
ZoomStr:=ShowBox.Text;
i:=StrToInt(ZoomStr);
ShowBox.Text:=ZoomStr+'%';
QRPreView1.Zoom:=i;
except
ShowBox.Text:='100%';
QRPreView1.Zoom:=100;
end;
ShowBox.SelectAll;
end;
StatusBar1.Panels[0].Text:=ShowBox.Text;
end;procedure TPreviewForm.PrintSetupBtnClick(Sender: TObject);
begin
QRPreView1.QRPrinter.PrintSetup;
end;procedure TPreviewForm.CloseBtnClick(Sender: TObject);
begin
Close;
end;procedure TPreviewForm.QRPreview1ProgressUpdate(Sender: TObject;
Progress: Integer);
begin
StatusBar1.Panels[2].Text:='已完成预览进度:'+IntToStr(Progress)+'%';
if Progress=100 then begin
CloseBtn.Enabled:=True;
ZoomFitButton.Enabled:=True;
Zoom100Button.Enabled:=True;
ZoomWidthButton.Enabled:=True;
ShowBox.Enabled:=True;
FirstButton.Enabled:=True;
PirorButton.Enabled:=True;
NextButton.Enabled:=True;
LastButton.Enabled:=True;
PrintSetupBtn.Enabled:=True;
PrintButton.Enabled:=True;
end;
end;end.
unit PrintUnit;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
QuickRpt, ExtCtrls, Qrctrls, Preview;type
TPrintForm = class(TForm)
QuickRep1: TQuickRep;
TitleBand1: TQRBand;
DetailBand1: TQRBand;
ColumnHeaderBand1: TQRBand;
PageFooterBand1: TQRBand;
TitleLabel: TQRLabel;
SubTitleLabel: TQRLabel;
QRSysData1: TQRSysData;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FPreviewForm:TPreviewForm;
procedure OnMyPreview(Sender: TObject);
public
{ Public declarations }
end;var
PrintForm: TPrintForm;implementationuses DMUnit;{$R *.DFM}{ TPrintForm }procedure TPrintForm.OnMyPreview(Sender: TObject);
begin
FPreviewForm:=TPreviewForm.Create(Self);
FPreviewForm.QRPreview1.QRPrinter := QuickRep1.QRPrinter;
FPreviewForm.ShowModal;
FPreviewForm.QRPreview1.QRPrinter :=nil;
FPreviewForm.Free;
end;procedure TPrintForm.FormCreate(Sender: TObject);
begin
QuickRep1.OnPreview:=OnMyPreview;
end;end.