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

📄 qrprntr.pas

📁 delphi7报表打印控件源码 可以设计报表
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    FQRPrinter : TQRPrinter;
    FZoom : integer;
    FZoomState : TQRZoomState;
    FOutlineControl : TTreeview;
    procedure SetPageNumber(Value : integer);
    procedure SetZoom(value : integer);
    procedure Fixvalues(Sender : TObject);
    procedure SetQRPrinter(Value : TQRPrinter);
  protected
    function GetOnHyperlink : TQRPreviewHyperlinkEvent;
    procedure SetOnHyperlink(Value : TQRPreviewHyperlinkEvent);
    procedure SetOutline(Value : TTreeview);
    procedure CMPageAvailable(var Message : TCM_QRPageAvailable); Message CM_QRPAGEAVAILABLE;
    procedure CMProgressUpdate(var Message : TCM_QRProgressUpdate); Message CM_QRPROGRESSUPDATE;
  public
    constructor Create(aOwner : TComponent); override;
    destructor Destroy; override;
    procedure UpdateImage;
    procedure UpdateZoom;
    procedure ZoomToWidth;
    procedure ZoomToFit;
    property PreviewImage : TQRPreviewImage read FPreviewImage;
    property QRPrinter : TQRPrinter read FQRPrinter write SetQRPrinter;
    property ZoomState : TQRZoomState read FZoomState write FZoomState;
  published
    property OnPageAvailable : TQRPageAvailableEvent read FOnPageAvailableEvent
                                                     write FOnPageAvailableEvent;
    property OnProgressUpdate : TQRProgressUpdateEvent read FOnProgressUpdateEvent write FOnProgressUpdateEvent;
    property OnHyperlink : TQRPreviewHyperlinkEvent read GetOnHyperlink write SetOnHyperlink;
    property Outline : TTreeview read FOutlineControl write SetOutline;
    property PageNumber : integer read FPageNumber write setPageNumber;
    property Zoom : integer read FZoom write SetZoom;
  end;

  { TQRExportFilter }
  TQRExportFilter = class
  private
    FOriginalQRPrinter : TQRPrinter;
    FActive : boolean;
    FFilename : string;
    FOwner : TComponent;
  protected
    function GetDescription : string; virtual;
    function GetExtension : string; virtual;
    function GetFilterName : string; virtual;
    function GetVendorName : string; virtual;
    function GetStreaming : boolean; virtual;
  public
    constructor Create(Filename : string);virtual;
    procedure Start(PaperWidth, PaperHeight : integer; Font : TFont); virtual;
    procedure EndPage; virtual;
    procedure Finish; virtual;
    procedure NewPage; virtual;
    procedure AcceptGraphic( Xoff, Yoff : extended; GControl : TControl); virtual;
    procedure AcceptBand( aBand : TControl; Xoff, Yoff, Expanded : extended); virtual;
    procedure TextOut(X,Y : extended; Font : TFont; BGColor : TColor; Alignment : TAlignment; Text : string); virtual;
    property Active : boolean read FActive write FActive;
    property Description : string read GetDescription;
    property FileExtension : string read GetExtension;
    property Filename : string read FFilename;
    property Name : string read GetFilterName;
    property Owner : TComponent read FOwner write FOwner;
    property Streaming : boolean read GetStreaming;
    property Vendor : string read GetVendorName;
    property OriginalQRPrinter : TQRPrinter read FOriginalQRPrinter write FOriginalQRPrinter;
  end;


// RP 1

  { TPrinterSettings }
  TPaperSizesSupported = array[Letter..Custom] of boolean;
  TQRPrinterSettingsEvent = procedure(Sender : TObject; var Cancel : Boolean; DevMode : pointer) of object;

  TPrinterSettings = class
  private
    { Device stuff }
    FDevice : PChar;
    FDriver : PChar;
    FPort : PChar;
    DeviceMode : THandle;
    DevMode : PDeviceMode;
    { Storage variables }
    FCopies : integer;
    FDuplex : boolean;
    FPrintMetafile : boolean;
    FUseStandardPrinter : boolean;
    FOnGetPrinterSettings : TQRPrinterSettingsEvent;
    FOnApplyPrinterSettings : TQRPrinterSettingsEvent;
    FUseExtendedDuplex : boolean;
    FExtendedDuplex : integer;
    FUseCustomBinCode : boolean;
    FCustomBinCode : integer;
    // QR 4
    FPrintQuality : integer;
    FCollate : integer;
    FColorOption : integer;
    FmemoryLimit : longint;
    FUseCustomPaperCode : boolean;
    FCustomPaperCode : integer;  FMaxExtentX : integer;
    FMaxExtentY : integer;
    FMinExtentX : integer;
    FMinExtentY : integer;
    FOrientation : TPrinterOrientation;
    FOutputBin : TQRBin;
    FPaperSize : TQRPaperSize;
    FPaperSizes : TPaperSizesSupported;
    FPaperWidth : integer;
    FPaperLength : integer;
    FPixelsPerX : integer;
    FPixelsPerY : integer;
    FTopOffset : integer;
    FLeftOffset : integer;
    FPrinter : TPrinter;
    FTitle : string;
    function GetCopies : integer;
    function GetDriver : string;
    function GetDuplex : boolean;
    function GetMaxExtentX : integer;
    function GetMaxExtentY : integer;
    function GetMinExtentX : integer;
    function GetMinExtentY : integer;
    function GetOrientation : TPrinterOrientation;
    function GetOutputBin : TQRBin;
    function GetPaperSize : TQRPaperSize;
    function GetPaperSizeSupported(PaperSize : TQRPaperSize) : boolean;
    function GetPaperWidth : integer;
    function GetPaperLength : integer;
    function GetPixelsPerX : integer;
    function GetPixelsPerY : integer;
    function GetPort : string;
    function GetPrinter : TPrinter;
    function GetTitle : string;
    function GetTopOffset : integer;
    function GetLeftOffset : integer;
    function Supported(Setting : integer) : boolean;
    procedure SetField(aField : integer);
    procedure GetPrinterSettings;
    procedure SetCopies(Value : integer);
    procedure SetDuplex(Value : boolean);
    procedure SetOrientation(Value : TPrinterOrientation);
    procedure SetOutputBin(Value : TQRBin);
    procedure SetPaperSize(Value : TQRPaperSize);
    procedure SetPaperLength(Value : integer);
    procedure SetPaperWidth(Value : integer);
    procedure SetPrinter(Value : TPrinter);
    procedure SetTitle(Value : string);
  public
    constructor Create;
    destructor Destroy; override;
    procedure ApplySettings;
    { read only properties }
    property Device : string read GetDriver;
    property Driver : string read GetDriver;
    property LeftOffset : integer read GetLeftOffset;
    property MaxExtentX : integer read GetMaxExtentX;
    property MaxExtentY : integer read GetMaxExtentY;
    property MinExtentX : integer read GetMinExtentX;
    property MinExtentY : integer read GetMinExtentY;
    property PaperSizeSupported[PaperSize : TQRPaperSize] : boolean read GetPaperSizeSupported;
    property PixelsPerX : integer read GetPixelsPerX;
    property PixelsPerY : integer read GetPixelsPerY;
    property Port : string read GetPort;
    property TopOffset : integer read GetTopOffset;
    { Read/write properties }
    property OnGetPrinterSettings : TQRPrinterSettingsEvent read FOnGetPrinterSettings write FOnGetPrinterSettings;
    property OnApplyPrinterSettings : TQRPrinterSettingsEvent read FOnApplyPrinterSettings write FOnApplyPrinterSettings;
    property Copies : integer read GetCopies write SetCopies;
    property Duplex : boolean read GetDuplex write SetDuplex;
    property Orientation : TPrinterOrientation read GetOrientation write SetOrientation;
    property PrintMetafile : boolean read FPrintMetafile write FPrintMetafile;
    property UseStandardprinter : boolean read FUseStandardprinter write FUseStandardprinter;
    property UseExtendedDuplex : boolean read FUseExtendedDuplex write FUseExtendedDuplex;
    property UseCustomBinCode : boolean read FUseCustomBinCode write FUseCustomBinCode;
    property UseCustomPaperCode : boolean read FUseCustomPaperCode write FUseCustomPaperCode;
    property CustomBinCode : integer read FCustomBinCode write FCustomBinCode;
    property ExtendedDuplex : integer read FExtendedDuplex write FExtendedDuplex;
    property CustomPaperCode : integer read FCustomPaperCode write FCustomPaperCode;
    property OutputBin : TQRBin read GetOutputBin write SetOutputBin;
    property PaperLength : integer read GetPaperLength write SetPaperLength;
    property PaperSize : TQRPaperSize read GetPaperSize write SetPaperSize;
    property PaperWidth : integer read GetPaperWidth write SetPaperWidth;
    property MemoryLimit : longint read FMemoryLimit write FMemoryLimit;
    property PrintQuality : integer read FPrintQuality write FPrintQuality;
    property Collate : integer read FCollate write FCollate;
    property ColorOption : integer read FColorOption write FColorOption;
    property Printer : TPrinter read GetPrinter write SetPrinter;
    property Title : string read GetTitle write SetTitle;
  end;

  { TQRPrinterSettings }
  TQRPrinterSettings = class(TPersistent)
  private
    FCopies : integer;
    FDuplex : boolean;
    FOrientation : TPrinterOrientation;
    FOutputBin : TQRBin;
    FPaperSize : TQRPaperSize;
    FPrinterIndex : integer;
    FTitle : string;
    FFirstPage : integer;
    FLastPage : integer;
    // lut
    FPrintMetafile : boolean;
    FUseStandardPrinter : boolean;
    FOnGetPrinterSettings : TQRPrinterSettingsEvent;
    FOnApplyPrinterSettings : TQRPrinterSettingsEvent;
    FUseExtendedDuplex : boolean;
    FExtendedDuplex : integer;
    // QR4
    FMemoryLimit : longint;
    FPrintQuality : integer;
    FCollate : integer;
    FColorOption : integer;
    FUseCustomBinCode : boolean;
    FCustomBinCode : integer;
    FUseCustomPaperCode : boolean;
    FCustomPaperCode : integer;  FMaxExtentX : integer;
  public
    constructor Create;
    procedure ApplySettings(APrinter : TQRPrinter);
    property Copies : integer read FCopies write FCopies;
    property Duplex : boolean read FDuplex write FDuplex;
    property FirstPage : integer read FFirstPage write FFirstPage;
    property LastPage : integer read FLastPage write FLastPage;
    property Orientation : TPrinterOrientation read FOrientation write FOrientation;
    property OutputBin : TQRBin read FOutputBin write FOutputBin;
    property PaperSize : TQRPaperSize read FPaperSize write FPaperSize;
    property PrinterIndex : integer read FPrinterIndex write FPrinterIndex;
    property Title : string read FTitle write FTitle;
    // lut
    property PrintMetafile : boolean read FPrintMetafile write FPrintMetafile;
    property UseStandardprinter : boolean read FUseStandardprinter write FUseStandardprinter;
    property UseExtendedDuplex : boolean read FUseExtendedDuplex write FUseExtendedDuplex;
    property UseCustomBinCode : boolean read FUseCustomBinCode write FUseCustomBinCode;
    property UseCustomPaperCode : boolean read FUseCustomPaperCode write FUseCustomPaperCode;
    property CustomBinCode : integer read FCustomBinCode write FCustomBinCode;
    property ExtendedDuplex : integer read FExtendedDuplex write FExtendedDuplex;
    property CustomPaperCode : integer read FCustomPaperCode write FCustomPaperCode;
    // QR4
    property MemoryLimit : longint read FMemoryLimit write FMemoryLimit default 250000;
    property PrintQuality : integer read FPrintQuality write FPrintQuality;
    property Collate : integer read FCollate write FCollate;
    property ColorOption : integer read FColorOption write FColorOption;

  end;

  { TQRPrinter related declarations }

  TQRPrinterDestination = (qrdMetafile, qrdPrinter {$ifdef LLionPDF}, qrdPDFFile{$endif});

  TQRPrinterStatus = (mpReady, mpBusy, mpFinished);

  TQRGenerateToPrinterEvent = procedure of object;
  TQRPrintSetupEvent = procedure of object;
  TQRExportToFilterEvent = procedure (aFilter : TQRExportFilter) of object;
  TQRPreviewEvent = procedure of object;
  TQRAfterPrintEvent = procedure (Sender : TObject) of object;
  TQRAfterPreviewEvent = procedure (Sender : TObject) of object;

  { TQRPrinter }
  TQRPrinter = class(TPersistent)
  private
    aPrinter : TPrinter;
    FParentReport : Tobject;
    aStream : TQRStream;
    FAfterPrintEvent : TQRAfterPrintEvent;
    FAfterPreviewEvent : TQRAfterPreviewEvent;
    FAvailablePages : integer;
    FCancelled : boolean;
    FCanvas : TCanvas;
    FCloseControl : TWinControl;
    FDestination : TQRPrinterDestination;
    FFirstPage : integer;
    FLastpage : integer;
    FLeftWaste : integer;
    FHyperlinks : TList;
    FClient : TWinControl;
    FMaster : TWinControl;
    FMetafile : TMetafile;
    FOnExportToFilterEvent : TQRExportToFilterEvent;
    FOnPreviewEvent : TNotifyEvent;
    FOnPrintSetupEvent : TQRPrintSetupEvent;
    FOutlineControl : TTreeview;
    FPage : TMetafile;
    FPageCount : integer;
    FPageNumber : integer;
    FPrinterOK : boolean;
    FProgress : integer;
    FMasterProgressStart : integer;
    FMasterProgressEnd : integer;
    FTitle : string;
    FTopWaste : integer;
    FShowingPreview : boolean;
    FStatus : TQRPrinterStatus;
    FXFactor : extended;
    FYFactor : extended;
    FPageList : TQRPageList;
    FPreviewControl : TWinControl;
    FReportLoaded : boolean;
    function CurrentPageOK : boolean;
    function GetLeftWaste : integer;
    function GetBin : TQRBin;
    function GetCanvas : TCanvas;
    function GetCompression : boolean;
    function GetCopies : integer;
    function GetDuplex : boolean;
    function GetOrientation : TPrinterOrientation;
    function GetPaperLength : integer;
    function GetPaperSize : TQRPaperSize;
    function GetPaperWidth : integer;
    function GetPrinterIndex : integer;
    function GetPrinters : TStrings;
    function GetTopWaste : integer;
    function GetOnGetPrinterSettings : TQRPrinterSettingsEvent;
    function GetOnApplyPrinterSettings : TQRPrinterSettingsEvent;
    function GetUseStandardPrinter : boolean;
    function GetPrintMetafile : boolean;
    function GetUseCustomBinCode : boolean;
    // QR4
    function GetPrinterHandle : THandle;
    function GetPrintQuality : integer;
    function GetCollate : integer;
    function GetColorOption : integer;
    procedure SetPrintQuality( value : integer);
    procedure SetCollate( value : integer);
    procedure SetColorOption( value : integer);

    function GetUseExtendedDuplex : boolean;
    function GetUseCustomPaperCode : boolean;
    function GetCustomBinCode : integer;
    function GetExtendedDuplex : integer;
    function GetCustomPaperCode : integer;
    procedure SetOnGetPrinterSettings(Value : TQRPrinterSettingsEvent);
    procedure SetOnApplyPrinterSettings(Value : TQRPrinterSettingsEvent);
    procedure SetUseStandardPrinter(Value : boolean);
    procedure CreateMetafileCanvas;
    procedure CreatePrinterCanvas;
    procedure EndMetafileCanvas;
    procedure EndPrinterCanvas;
    procedure SetUseExtendedDuplex( value : boolean);
    procedure SetUseCustomBinCode( value : boolean);
    procedure SetUseCustomPaperCode( value : boolean);
    procedure SetExtendedDuplex( value : integer);
    procedure SetCustomBinCode( value : integer);
    procedure SetCustomPaperCode( value : integer);
    procedure SetAvailablePages(Value : integer);
    procedure SetBin(Value : TQRBin);
    procedure SetCompression(Value : boolean);
    procedure SetCopies(Value : integer);
    procedure SetDestination(Value : TQRPrinterDestination);
    procedure SetDuplex(Value : boolean);
    procedure SetOrientation(Value : TPrinterOrientation);
    procedure SetOutline(Value : TTreeview);
    procedure SetPaperLength(Value : integer);
    procedure SetPageNumber(Value : integer);
    procedure SetPaperSize(Value : TQRPaperSize);
    procedure SetPaperWidth(Value : integer);
    procedure SetPrinterIndex(Value : integer);
    procedure SetProgress(Value : integer);
    procedure SetShowingPreview(Value : boolean);
    procedure SetPrintMetafile(Value : boolean);
{$ifdef LLIONPDF}
    procedure CreatePDFCanvas;
{$endif}
  public
{$ifdef LLIonPDF}
    PDFDoc : TPDFDocument;
{$endif}
    aPrinterSettings : TPrinterSettings;
    procedure PrintMetafileDirect( filename : string; frompage, topage : integer);
    constructor Create( parentrep : TObject);
    destructor Destroy; override;
    function GetPage(Value : integer) : TMetafile;
    procedure GetPageEx(Value : integer; var AMetafile : TMetafile;
                              var AHyperlinks : TList);
    function XPos(Value : extended) : integer;
    function XSize(Value : extended) : integer;
    function YPos(Value : extended) : integer;
    function YSize(Value : extended) : integer;
    function PaperLengthValue : integer;
    function PaperWidthValue : integer;
    procedure AbortDoc;
    procedure BeginDoc;
    procedure Cancel;
    procedure Cleanup;
    procedure ClosePreview(Control : TWinControl);
    procedure ClosePreviewA(Control : TWinControl);
    procedure EndDoc;
    procedure ExportToFilter(aFilter : TQRExportFilter);
    procedure FreeHyperlinks;
    procedure AddHyperlink(ARect : TRect; AHyperlink : string);
    procedure AddOutline(Level : integer; Caption : string; Target : TRect);
    procedure Load(Filename : string);
    procedure NewPage;
    procedure Preview;
    procedure PreviewModal;
    procedure Print;
    procedure PrintSetup;
    procedure Save(Filename : string);
    property ParentReport : TObject read FParentReport;
    property ReportLoaded : boolean read FReportLoaded write FReportLoaded;
    property AfterPreview : TQRAfterPreviewEvent read FAfterPreviewEvent write FAfterPreviewEvent;
    property AfterPrint : TQRAfterPrintEvent read FAfterPrintEvent write FAfterPrintEvent;
    property AvailablePages : integer read FAvailablePages write SetAvailablePages;
    property OutputBin : TQRBin read GetBin write SetBin;
    property PreviewControl : TWinControl read FPreviewControl write FPreviewControl;
    property Cancelled : boolean read FCancelled write FCancelled;
    property Canvas : TCanvas read GetCanvas;
    property Client : TWinControl read FClient write FClient;
    property Compression : boolean read GetCompression write SetCompression;
    property Copies : integer read GetCopies write SetCopies;
    property Destination : TQRPrinterDestination read FDestination write SetDestination;
    property Duplex : boolean read GetDuplex write SetDuplex;
    property FirstPage : integer read FFirstPage write FFirstPage;
    property LastPage : integer read FLastPage write FLastPage;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -