1{%MainUnit ../osprinters.pas} 2{ 3 Author: Olivier Guilbaud 4 5 ***************************************************************************** 6 This file is part of the Lazarus Component Library (LCL) 7 8 See the file COPYING.modifiedLGPL.txt, included in this distribution, 9 for details about the license. 10 ***************************************************************************** 11 12 Abstract: 13 This unit provide an access at Printers for Win32 14 15 History 16 04/03/2005 OG - Fix build (from Jesus) 17 - Fix select printer dialog. 18 09/03/2005 OG - Includes files for osPrinters 19 20} 21 22uses 23 Classes, SysUtils, LazUTF8, Printers, LCLType, Windows; 24 25 26Type 27 THandleType = (htNone, htIC, htDC); 28 29 { TWinPrinter } 30 31 TWinPrinter = class(TPrinter) 32 private 33 //fDefaultPrinter : String; 34 fLastHandleType : THandleType; 35 fDC : HDC; 36 fPrinterHandle : THandle; 37 procedure SetIC; 38 procedure SetDC; 39 procedure ClearDC; 40 procedure FreeDC; 41 function UpdateDevMode(APrinterIndex:Integer): boolean; 42 43 protected 44 function GetDefaultPrinter: string; 45 procedure DoBeginDoc; override; 46 procedure DoNewPage; override; 47 procedure DoBeginPage; override; 48 procedure DoEndPage; override; 49 procedure DoEndDoc(aAborted : Boolean); override; 50 procedure DoAbort; override; 51 52 procedure DoEnumPrinters(Lst : TStrings); override; 53 procedure DoResetPrintersList; override; 54 55 procedure DoEnumPapers(Lst : TStrings); override; 56 function DoGetPaperName: string; override; 57 function DoGetDefaultPaperName: string; override; 58 procedure DoSetPaperName(aName : string); override; 59 function DoGetPaperRect(aName : string; Var aPaperRc : TPaperRect) : Integer; override; 60 function DoSetPaperRect(aPaperRc: TPaperRect):boolean; override; 61 62 procedure DoEnumBins(Lst : TStrings); override; 63 function DoGetDefaultBinName: string; override; 64 function DoGetBinName: string; override; 65 procedure DoSetBinName(aName: string); override; 66 procedure DoEnumFonts(Lst: TStrings); override; 67 68 function DoSetPrinter(aName : string): Integer; override; 69 70 function DoGetCopies : Integer; override; 71 procedure DoSetCopies(aValue : Integer); override; 72 function DoGetOrientation: TPrinterOrientation; override; 73 procedure DoSetOrientation(aValue : TPrinterOrientation); override; 74 75 function GetXDPI: Integer; override; 76 function GetYDPI: Integer; override; 77 function GetPrinterType: TPrinterType;override; 78 function DoGetPrinterState: TPrinterState;override; 79 function GetCanPrint: Boolean;override; 80 function GetCanRenderCopies : Boolean;override; 81 function GetHandlePrinter : HDC; 82 procedure SetHandlePrinter(aValue : HDC); 83 procedure RawModeChanging; override; 84 procedure PrinterSelected; override; 85 procedure DoDestroy; override; 86 public 87 constructor Create; override; 88 89 function Write(const Buffer; Count:Integer; out Written: Integer): Boolean; override; 90 91 //Warning not portable functions here 92 procedure AdvancedProperties; 93 //Warning it is a not potable property 94 property Handle : HDC read GetHandlePrinter write SetHandlePrinter; 95 96 end; 97 98