Class TPreviewPrinter (unit PrevPrinter)

Inherits from

TComponent

Constructors


constructor Create(AOwner: TComponent);

************************************************************************ TPreviewPrinter


Functions

procedure BeginDoc;

Printer Methods

destructor Destroy;


procedure DrawAlignText(y: integer; Align: TAlignment; const Text: string; Font: TFont);

RestoreFont(Font, ppiy);

procedure DrawHdrFtrPage(PageNum: integer);


procedure DrawRichText(RE: TCustomRichEdit);

flush buffer

procedure DrawStringList(Strings: TStrings);

Draw the Header, Footer, & Page Num

procedure EndDoc;


procedure FixFont(Font: TFont);


function GetPreviewForm: TForm;

This is incase they called NewPage, but never drew anything on it

procedure NewPage;


function PageSetupDlg: integer;


procedure Preview;

Change this later when allow threaded printing

procedure Print;


function PrintDialog: boolean;


function PrintRange(StartPage, StopPage: integer): boolean;

Returns False if user cancels print job

procedure RestoreFont(Font: TFont; PPI: integer);


function UnitToX(x: double): integer;

Helper Methods (Canvas

Need a TrueType font that can scale (MS Sans Serif doesn't scale well


function UnitToY(y: double): integer;


function XToUnit(x: integer): double;


function YToUnit(y: integer): double;


procedure FreeMetaFiles;


function GetCanvas: TCanvas;

TODO: This will change with threading

function GetLastAvailPage: integer;


function GetMetaFile(i: integer): TMetaFile;


function GetPageNum: integer;

Print the Page

procedure InitPrinterVars(hdc: THandle);


procedure Loaded;


procedure SetDrawOptions(NewOptions: TTextOptions);


procedure SetUnits(Val: TUnits);


Properties

property Orientation : TPrinterOrientation


property ShowGrid : boolean


property TextOptions : TTextOptions


property Title : string


property Units : TUnits


property ZoomOption : TZoomOption


property ZoomVal : integer


property Canvas : TCanvas


property LastAvailPage : integer


property MetaFiles : TMetaFile


property OffsetX : integer


property OffsetY : integer


property PageHeight : integer


property PageNumber : integer


property PageWidth : integer


property PixelsPerInchX : integer


property PixelsPerInchY : integer


property Printing : boolean


Events

event OnNewPage : TNewPageProc


event OnOwnerDraw : TOwnerDrawProc


event OnOwnerHeight : TOwnerHeightProc


event OnStatus : TStatusProc


Variables

ConvFac : double;


CurCanvas : TCanvas;


FDrawOpt : TTextOptions;


FNewPage : TNewPageProc;


FOnStatus : TStatusProc;


FOrient : TPrinterOrientation;


FOwnDraw : TOwnerDrawProc;


FOwnHgt : TOwnerHeightProc;


FPrinting : boolean;


FShowGrid : boolean;


FTitle : string;


FUnits : TUnits;


FZoomOpt : TZoomOption;


FZoomVal : integer;


MFList : TList;


offx : integer;


offy : integer;


ppix : integer;


ppiy : integer;


sizex : integer;


sizey : integer;


UsedPage : boolean;


TmpBmp : TBitmap;



Constructors


constructor Create(AOwner: TComponent);

************************************************************************ TPreviewPrinter


Functions


procedure BeginDoc;

Printer Methods


destructor Destroy;


procedure DrawAlignText(y: integer; Align: TAlignment; const Text: string; Font: TFont);

RestoreFont(Font, ppiy);


procedure DrawHdrFtrPage(PageNum: integer);


procedure DrawRichText(RE: TCustomRichEdit);

flush buffer


procedure DrawStringList(Strings: TStrings);

Draw the Header, Footer, & Page Num


procedure EndDoc;


procedure FixFont(Font: TFont);


function GetPreviewForm: TForm;

This is incase they called NewPage, but never drew anything on it


procedure NewPage;


function PageSetupDlg: integer;


procedure Preview;

Change this later when allow threaded printing


procedure Print;


function PrintDialog: boolean;


function PrintRange(StartPage, StopPage: integer): boolean;

Returns False if user cancels print job


procedure RestoreFont(Font: TFont; PPI: integer);


function UnitToX(x: double): integer;

Helper Methods (Canvas

Need a TrueType font that can scale (MS Sans Serif doesn't scale well


function UnitToY(y: double): integer;


function XToUnit(x: integer): double;


function YToUnit(y: integer): double;


procedure FreeMetaFiles;


function GetCanvas: TCanvas;

TODO: This will change with threading


function GetLastAvailPage: integer;


function GetMetaFile(i: integer): TMetaFile;


function GetPageNum: integer;

Print the Page


procedure InitPrinterVars(hdc: THandle);


procedure Loaded;


procedure SetDrawOptions(NewOptions: TTextOptions);


procedure SetUnits(Val: TUnits);


Properties


property Orientation : TPrinterOrientation


property ShowGrid : boolean


property TextOptions : TTextOptions


property Title : string


property Units : TUnits


property ZoomOption : TZoomOption


property ZoomVal : integer


property Canvas : TCanvas


property LastAvailPage : integer


property MetaFiles : TMetaFile


property OffsetX : integer


property OffsetY : integer


property PageHeight : integer


property PageNumber : integer


property PageWidth : integer


property PixelsPerInchX : integer


property PixelsPerInchY : integer


property Printing : boolean


Events


event OnNewPage : TNewPageProc


event OnOwnerDraw : TOwnerDrawProc


event OnOwnerHeight : TOwnerHeightProc


event OnStatus : TStatusProc


Variables


ConvFac : double;


CurCanvas : TCanvas;


FDrawOpt : TTextOptions;


FNewPage : TNewPageProc;


FOnStatus : TStatusProc;


FOrient : TPrinterOrientation;


FOwnDraw : TOwnerDrawProc;


FOwnHgt : TOwnerHeightProc;


FPrinting : boolean;


FShowGrid : boolean;


FTitle : string;


FUnits : TUnits;


FZoomOpt : TZoomOption;


FZoomVal : integer;


MFList : TList;


offx : integer;


offy : integer;


ppix : integer;


ppiy : integer;


sizex : integer;


sizey : integer;


UsedPage : boolean;


TmpBmp : TBitmap;