Question:
Is there any way to call the GetDeviceCaps() function before I
start my print job?
Answer:
Yes, You can pass the Printer.Handle property to the
GetDeviceCaps() function instead of the Printer.Canvas.Handle
property.
Example:
{Before BeginDoc;}
HRes := GetDeviceCaps(Printer.Handle, HORZRES);
VRes := GetDeviceCaps(Printer.Handle, VERTRES);
Printer.BeginDoc;
{After BeginDoc;}
InchX := GetDeviceCaps(Printer.Canvas..Handle, LOGPIXELSX);
InchY := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY);
Printer.Canvas.TextOut(InchX, InchY, 'Delphi Is RAD!');
Printer.EndDoc;