⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qrchildfrm.~pas

📁 基于Interbase的图书管理系统
💻 ~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 + -