📄 qrchildfrm.~pas
字号:
unit qrchildfrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QRPrntr, ImgList, ComCtrls, ToolWin, Buttons, StdCtrls, ExtCtrls;
type
TQRchildForm = class(TForm)
QRPreview: TQRPreview;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
SDreport: TSaveDialog;
ODreport: TOpenDialog;
SBfit: TSpeedButton;
SBall: TSpeedButton;
SBwidth: TSpeedButton;
ToolButton2: TToolButton;
SBfirst: TSpeedButton;
SBprevious: TSpeedButton;
SBnext: TSpeedButton;
SBlast: TSpeedButton;
ToolButton3: TToolButton;
SBprintsetup: TSpeedButton;
SBprint: TSpeedButton;
ToolButton4: TToolButton;
SBsave: TSpeedButton;
SBopen: TSpeedButton;
ToolButton5: TToolButton;
SpeedButton1: TSpeedButton;
ToolButton6: TToolButton;
SBreport: TStatusBar;
SBsmall: TSpeedButton;
pnlshowstuts: TPanel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure SBfitClick(Sender: TObject);
procedure SBallClick(Sender: TObject);
procedure SBwidthClick(Sender: TObject);
procedure SBpreviousClick(Sender: TObject);
procedure SBnextClick(Sender: TObject);
procedure SBprintsetupClick(Sender: TObject);
procedure SBprintClick(Sender: TObject);
procedure SBfirstClick(Sender: TObject);
procedure SBlastClick(Sender: TObject);
procedure SBsaveClick(Sender: TObject);
procedure SBopenClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure QRPreviewPageAvailable(Sender: TObject; PageNum: Integer);
procedure SBsmallClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure QRPreviewProgressUpdate(Sender: TObject; Progress: Integer);
procedure SBreportDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
const Rect: TRect);
private
FAsChild: Boolean;
FTempParent: TWinControl;
statusDrawRect:TRect;
progressbar:TProgressbar;
{ Private declarations }
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure Loaded; override;
public
constructor Create(AOwner: TComponent); overload; override;
constructor Create(AOwner: TComponent; AParent: TWinControl); reintroduce; overload;
procedure setNavbutton;
procedure firstNavbutton;
{ Public declarations }
end;
var
QRchildForm: TQRchildForm;
implementation
{$R *.dfm}
{ TQRchildForm }
var
tempparent:TwinControl;
constructor TQRchildForm.Create(AOwner: TComponent; AParent: TWinControl);
begin
FAsChild := True;
FTempParent := aParent;
inherited Create(AOwner);
end;
constructor TQRchildForm.Create(AOwner: TComponent);
begin
FAsChild := False;
inherited Create(AOwner);
end;
procedure TQRchildForm.CreateParams(var Params: TCreateParams);
begin
Inherited CreateParams(Params);
if FAsChild then
Params.Style := Params.Style or WS_CHILD;
end;
procedure TQRchildForm.Loaded;
begin
inherited;
if FAsChild then
begin
align := alClient;
BorderStyle := bsNone;
BorderIcons := [];
Parent := FTempParent;
Align:=alClient;
Position := poDefault;
end;
end;
procedure TQRchildForm.setNavbutton;
begin
SBfirst.Enabled:=(QRPreview.PageNumber<>1);
SBprevious.Enabled:=(QRPreview.PageNumber<>1);
SBnext.Enabled:=(QRPreview.PageNumber<>QRPreview.QRPrinter.PageCount);
SBlast.Enabled:=(QRPreview.PageNumber<>QRPreview.QRPrinter.PageCount);
end;
procedure TQRchildForm.firstNavbutton;
begin
SBfirst.Enabled:=true;
SBprevious.Enabled:=true;
SBnext.Enabled:=true;
SBlast.Enabled:=true;
end;
procedure TQRchildForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TQRchildForm.FormDestroy(Sender: TObject);
begin
QRchildForm:=nil;
progressbar.Free;
progressbar:=nil;
end;
procedure TQRchildForm.SBfitClick(Sender: TObject);
begin
QRPreview.ZoomToFit;
end;
procedure TQRchildForm.SBallClick(Sender: TObject);
begin
QRPreview.Zoom:=100;
end;
procedure TQRchildForm.SBwidthClick(Sender: TObject);
begin
QRPreview.ZoomToWidth;
end;
procedure TQRchildForm.SBpreviousClick(Sender: TObject);
begin
if (QRPreview.PageNumber-1)>0 then
QRPreview.PageNumber:=QRPreview.PageNumber-1;
SBreport.Panels[1].Text:='Page '+inttostr(QRPreview.PageNumber)+' of '+inttostr(QRPreview.QRPrinter.PageCount);
setNavbutton;
end;
procedure TQRchildForm.SBnextClick(Sender: TObject);
begin
if QRPreview.QRPrinter.PageCount>=(QRPreview.PageNumber+1) then
QRPreview.PageNumber:=QRPreview.PageNumber+1;
SBreport.Panels[1].Text:='Page '+inttostr(QRPreview.PageNumber)+' of '+inttostr(QRPreview.QRPrinter.PageCount);
setNavbutton;
end;
procedure TQRchildForm.SBprintsetupClick(Sender: TObject);
begin
QRPreview.QRPrinter.PrintSetup;
end;
procedure TQRchildForm.SBprintClick(Sender: TObject);
begin
QRPreview.QRPrinter.Print;
end;
procedure TQRchildForm.SBfirstClick(Sender: TObject);
begin
QRPreview.PageNumber:=1;
SBreport.Panels[1].Text:='Page '+inttostr(QRPreview.PageNumber)+' of '+inttostr(QRPreview.QRPrinter.PageCount);
setNavbutton;
end;
procedure TQRchildForm.SBlastClick(Sender: TObject);
begin
QRPreview.PageNumber:=QRPreview.QRPrinter.PageCount;
SBreport.Panels[1].Text:='Page '+inttostr(QRPreview.PageNumber)+' of '+inttostr(QRPreview.QRPrinter.PageCount);
setNavbutton;
end;
procedure TQRchildForm.SBsaveClick(Sender: TObject);
begin
if SDreport.Execute then
QRPreview.QRPrinter.Save(SDreport.FileName);
end;
procedure TQRchildForm.SBopenClick(Sender: TObject);
begin
if ODreport.Execute then
begin
if fileexists(ODreport.FileName) then QRPreview.QRPrinter.Load(ODreport.FileName)
else messagedlg('文件不存在!',mtError,[mbOK],0);
end;
end;
procedure TQRchildForm.SpeedButton1Click(Sender: TObject);
begin
try
if not assigned(tempparent) then
tempparent:=TQRchildForm(QRPreview.Parent).Parent;
TQRchildForm(QRPreview.Parent).Parent:=nil;
TQRchildForm(QRPreview.Parent).WindowState:=wsMaximized;
SBsmall.Visible:=true;
except
end;
end;
procedure TQRchildForm.QRPreviewPageAvailable(Sender: TObject;
PageNum: Integer);
begin
SBreport.Panels[1].Text:='共 '+inttostr(PageNum)+' 页';
if pageNum=QRPreview.QRPrinter.PageCount then
begin
QRPreview.PageNumber:=1;
SBreport.Panels[1].Text:='Page 1 of '+inttostr(QRPreview.QRPrinter.PageCount);
Application.MainForm.Enabled:=true;
progressbar.Position:=0;
pnlshowstuts.SendToBack;
pnlshowstuts.Visible:=false;
end;
end;
procedure TQRchildForm.SBsmallClick(Sender: TObject);
begin
try
TQRchildForm(QRPreview.Parent).WindowState:=wsNormal;
TQRchildForm(QRPreview.Parent).Parent:=tempparent;
SBsmall.Visible:=false;
tempparent:=nil;
except
end;
end;
procedure TQRchildForm.FormCreate(Sender: TObject);
begin
SBsmall.Visible:=false;
ToolBar1.Enabled:=false;
if not assigned(progressbar) then
progressbar:=Tprogressbar.Create(self);
end;
procedure TQRchildForm.QRPreviewProgressUpdate(Sender: TObject;
Progress: Integer);
begin
if progress=1 then begin
Application.MainForm.Enabled:=false;
pnlshowstuts.BringToFront;
pnlshowstuts.Visible:=true;
with progressbar do
begin
top:=StatusDrawRect.Top;
left:=StatusDrawRect.Left;
width:=StatusDrawRect.Right-StatusDrawRect.Left;
height:=StatusDrawRect.Bottom-StatusDrawRect.Top;
visible:=true;
parent:=SBreport;
min:=0;
max:=100;
step:=1;
Position:=0;
end;{with}
end;{if}
SBreport.Panels[0].Text:=inttostr(Progress)+'%';
progressbar.Position:=Progress;
if progress=100 then begin
Application.MainForm.Enabled:=true;
progressbar.Position:=0;
pnlshowstuts.SendToBack;
pnlshowstuts.Visible:=false;
end;
end;
procedure TQRchildForm.SBreportDrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
statusDrawRect:=Rect;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -