Thema: Delphi Drucken

Einzelnen Beitrag anzeigen

samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#20

Re: Drucken

  Alt 10. Jul 2009, 13:04
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
  Mit Zitat antworten Zitat