Das muß aus diversen Parameter zurückgerechnet werden. Der linke und der obere Rand ergibt sich aus PHYSICALOFFSETX, PHYSICALOFFSETY. Der rechte und der untere Rand muß dann aus PHYSICALWIDTH, PHYSICALHEIGHT abzüglich HORZRES unter Berücksichtigung von LOGPIXELSX bzw. VERTRES unter Berücksichtigung von LOGPIXELSY berechnet werden.
Delphi-Quellcode:
function GetDefaultMinMargins: TRect;
var
XResolution, YResolution: Extended;
PhysicalPage: TPoint;
PrintablePage: TPoint;
Offset: TPoint;
begin
XResolution := 1/GetDeviceCaps(Printer.Handle, LOGPIXELSX)*1000;
YResolution := 1/GetDeviceCaps(Printer.Handle, LOGPIXELSY)*1000;
PhysicalPage.X := GetDeviceCaps(Printer.Handle, PHYSICALWIDTH);
PhysicalPage.Y := GetDeviceCaps(Printer.Handle, PHYSICALHEIGHT);
PrintablePage.X := GetDeviceCaps(Printer.Handle, HORZRES);
PrintablePage.Y := GetDeviceCaps(Printer.Handle, VERTRES);
Offset.X := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
Offset.Y := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
Result.Left := trunc(Offset.X*XResolution+0.5);
Result.Top := trunc(Offset.Y*YResolution+0.5);
Result.Right := trunc((PhysicalPage.X-Offset.X-PrintablePage.X)*XResolution+0.5);
Result.Bottom := trunc((PhysicalPage.Y-Offset.Y-PrintablePage.Y)*YResolution+0.5);
end;
Wenn ich mich richtig erinnere war das Ergebnis dann in 1/1000 inches