{ ***************************************************************************** This file is part of the Printer4Lazarus package See the file COPYING.modifiedLGPL.txt, included in this distribution, for details about the license. ***************************************************************************** Author: Olivier GUILBAUD Abstract: Common component dialogs for select or setup printers ------------------------------------------------------------------------------} unit PrintersDlgs; {$mode objfpc} {$IFDEF LCLCocoa} {$modeswitch objectivec1} {$ENDIF} {$H+} interface {$IFDEF WinCE} {$FATAL This unit (and therefore the Printers4Lazarus package) cannot be built for WinCE} {$ENDIF} uses Classes, SysUtils, Forms, Controls, Dialogs, LResources, Printers, OsPrinters; type TPageMeasureUnits = ( pmDefault, pmMillimeters, pmInches ); type TPageSetupDialogOption = ( psoDefaultMinMargins, psoDisableMargins, psoDisableOrientation, psoDisablePagePainting, psoDisablePaper, psoDisablePrinter, psoMargins, psoMinMargins, psoShowHelp, psoWarning, psoNoNetworkButton ); TPageSetupDialogOptions = set of TPageSetupDialogOption; const cDefaultPageSetupDialogOptions = [psoDefaultMinMargins]; cDefaultPageSetupMargin = 0; cDefaultPageSetupMinMargin = 400; //400: in mm it's 4mm, in inches it's ~10mm type { TPageSetupDialog } TPageSetupDialog = class(TCustomPrinterSetupDialog) private FPageWidth: integer; FPageHeight: integer; FMarginLeft: integer; FMarginTop: integer; FMarginRight: integer; FMarginBottom: integer; FMinMarginLeft: integer; FMinMarginTop: integer; FMinMarginRight: integer; FMinMarginBottom: integer; FUnits: TPageMeasureUnits; FOptions: TPageSetupDialogOptions; protected function DoExecute: Boolean; override; public constructor Create(TheOwner: TComponent); override; property OnDialogResult; property AttachTo; published property PageWidth: integer read FPageWidth write FPageWidth default 0; property PageHeight: integer read FPageHeight write FPageHeight default 0; property MarginLeft: integer read FMarginLeft write FMarginLeft default cDefaultPageSetupMargin; property MarginTop: integer read FMarginTop write FMarginTop default cDefaultPageSetupMargin; property MarginRight: integer read FMarginRight write FMarginRight default cDefaultPageSetupMargin; property MarginBottom: integer read FMarginBottom write FMarginBottom default cDefaultPageSetupMargin; property MinMarginLeft: integer read FMinMarginLeft write FMinMarginLeft default cDefaultPageSetupMinMargin; property MinMarginTop: integer read FMinMarginTop write FMinMarginTop default cDefaultPageSetupMinMargin; property MinMarginRight: integer read FMinMarginRight write FMinMarginRight default cDefaultPageSetupMinMargin; property MinMarginBottom: integer read FMinMarginBottom write FMinMarginBottom default cDefaultPageSetupMinMargin; property Options: TPageSetupDialogOptions read FOptions write FOptions default cDefaultPageSetupDialogOptions; property Units: TPageMeasureUnits read FUnits write FUnits default pmDefault; end; { TPrinterSetupDialog } TPrinterSetupDialog = class(TCustomPrinterSetupDialog) protected function DoExecute: Boolean; override; public property OnDialogResult; property AttachTo; end; { TPrintDialog } TPrintDialog = class(TCustomPrintDialog) protected function DoExecute: Boolean; override; public property OnDialogResult; property AttachTo; published property Collate; property Copies; property FromPage; property MinPage; property MaxPage; property Options; property PrintToFile; property PrintRange; property ToPage; end; procedure Register; implementation {$R printersdlgs.res} {$IFDEF UNIX} {$IFDEF DARWIN} {$IFDEF LCLCarbon} {$IFNDEF NativePrint} // add units as needed for carbon, for the moment use cups ones. uses udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup, Printer4LazStrConst, FileUtil; {$I cupsprndialogs.inc} {$ELSE} uses Math, CarbonProc, MacOSAll, LCLProc; {$I carbonprndialogs.inc} {$ENDIF} {$ENDIF} {$IFDEF LCLCocoa} uses Math, CocoaAll, MacOSAll, LCLProc, cocoaprndelegate; {$I cocoaprndialogs.inc} {$ENDIF} {$IFDEF LCLQt} uses qtobjects, qt4, qtint, LazUTF8; {$I qtprndialogs.inc} {$ENDIF} {$IFDEF LCLQt5} uses qtobjects, qt5, qtint, LazUTF8; {$I qtprndialogs.inc} {$ENDIF} {$IFDEF LCLGtk2} uses udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup, Printer4LazStrConst; {$I cupsprndialogs.inc} {$ENDIF} {$ELSE} {$IFDEF LCLQt} uses qtobjects, qt4, qtint, LazUTF8; {$I qtprndialogs.inc} {$ELSE} {$IFDEF LCLQt5} uses qtobjects, qt5, qtint, LazUTF8; {$I qtprndialogs.inc} {$ELSE} uses udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup, Printer4LazStrConst; {$I cupsprndialogs.inc} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$IFDEF MSWindows} {$IFDEF LCLQt} uses Windows, qtobjects, qtwidgets, qt4, LCLIntf, LCLType, LazUTF8; {$I qtprndialogs.inc} {$ELSE} {$IFDEF LCLQt5} uses Windows, qtobjects, qtwidgets, qt5, LCLIntf, LCLType, LazUTF8; {$I qtprndialogs.inc} {$ELSE} uses Windows, WinUtilPrn, InterfaceBase, LCLIntf, LCLType, WinVer; {$I winprndialogs.inc} {$ENDIF} {$ENDIF} {$ENDIF} constructor TPageSetupDialog.Create(TheOwner: TComponent); begin inherited Create(TheOwner); FPageWidth:= 0; FPageHeight:= 0; FMarginLeft:= cDefaultPageSetupMargin; FMarginTop:= cDefaultPageSetupMargin; FMarginRight:= cDefaultPageSetupMargin; FMarginBottom:= cDefaultPageSetupMargin; FMinMarginLeft:= cDefaultPageSetupMinMargin; FMinMarginTop:= cDefaultPageSetupMinMargin; FMinMarginRight:= cDefaultPageSetupMinMargin; FMinMarginBottom:= cDefaultPageSetupMinMargin; FOptions:= cDefaultPageSetupDialogOptions; FUnits:= pmDefault; end; procedure Register; begin RegisterComponents('Dialogs',[TPrinterSetupDialog,TPrintDialog,TPageSetupDialog]); end; end.