A little bug in PrintPreview
Select messages from
# through # FAQ
[/[Print]\]

DELPHI AREA -> DELPHI AREA's Products

#1: A little bug in PrintPreview Author: MixyLocation: Bulgaria PostPosted: 28/12/05 10:51
    —
I found a little bug in PrintPreview - the printable area (function TPrintPreview.GetPrinterPageBounds: TRect) is not calculated correctly.

My solution is posted below:

Code:

function TPrintPreview.GetPrinterPageBounds: TRect;
var
  Offset: TPoint;
  DPI: TPoint;

  // -- Mixy --
  PrintAreaX,
  PrintAreaY: integer;

begin
  Result := PageBounds;
  if PrinterInstalled then
  begin
    Offset.X := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
    Offset.Y := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
    DPI.X := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
    DPI.Y := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
    Offset.X := ConvertUnits(Offset.X, DPI.X, mmPixel, Units);
    Offset.Y := ConvertUnits(Offset.Y, DPI.Y, mmPixel, Units);

    // -- Mixy --
    PrintAreaX:=GetDeviceCaps(Printer.Handle, HORZRES);
    PrintAreaY:=GetDeviceCaps(Printer.Handle, VERTRES);
    PrintAreaX:=ConvertUnits(PrintAreaX, DPI.X, mmPixel, Units);
    PrintAreaY:=ConvertUnits(PrintAreaY, DPI.X, mmPixel, Units);

   // InflateRect(Result, -Offset.X, -Offset.Y);

    // -- Mixy --
    Result.Left:=Offset.X;
    Result.Top:=Offset.Y;
    Result.Right:=Offset.X+PrintAreaX;
    Result.Bottom:=Offset.Y+PrintAreaY;

  end;
end;

#2:  Author: KambizLocation: Tehran, Iran PostPosted: 29/12/05 08:53
    —
Thank you very much!



DELPHI AREA -> DELPHI AREA's Products


output generated using printer-friendly topic mod. All times are GMT

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group