tvplanit: Fix incorrect page size in print preview.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8531 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2022-10-10 18:06:26 +00:00
parent 60fac597bf
commit 7d24ff5ac1
4 changed files with 27 additions and 21 deletions

View File

@@ -110,8 +110,8 @@ type
function GetPageCount: Integer;
protected
function CalculatePageHeight(Printer: TPrinter): Integer;
function CalculatePageWidth(Printer: TPrinter): Integer;
function CalculatePageHeight(APrinter: TPrinter): Integer;
function CalculatePageWidth(APrinter: TPrinter): Integer;
procedure ClearPageData;
{$IFDEF DELPHI}
procedure CMWantSpecialKey(var Msg: TCMWantSpecialKey); message CM_WANTSPECIALKEY;
@@ -231,6 +231,9 @@ type
implementation
uses
OSPrinters;
constructor TVpPrintPreview.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
@@ -262,7 +265,7 @@ begin
FEndDate := Now + 7;
FScrollX := 0;
FScrollY := 0;
FPrinter := Printer;
FPrinter := Printers.Printer;
// Initial size of the control
with GetControlClassDefaultSize do
@@ -284,39 +287,39 @@ begin
inherited Destroy;
end;
function TVpPrintPreview.CalculatePageHeight(Printer: TPrinter): Integer;
function TVpPrintPreview.CalculatePageHeight(APrinter: TPrinter): Integer;
var
ScreenPPI: Integer;
PrinterPPI: Integer;
begin
ScreenPPI := GetDeviceCaps(Canvas.Handle, LOGPIXELSY);
{$IFDEF DELPHI}
PrinterPPI := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
PrinterPPI := GetDeviceCaps(APrinter.Handle, LOGPIXELSY);
{$ELSE}
PrinterPPI := Printer.XDpi;
PrinterPPI := APrinter.XDpi;
{$ENDIF}
if PrinterPPI <> 0 then
Result := Round(ScreenPPI / PrinterPPI * Printer.PageHeight)
Result := Round(ScreenPPI / PrinterPPI * APrinter.PageHeight)
else
Result := ScreenPPI * Printer.PageHeight;
Result := ScreenPPI * APrinter.PageHeight;
end;
function TVpPrintPreview.CalculatePageWidth(Printer: TPrinter) : Integer;
function TVpPrintPreview.CalculatePageWidth(APrinter: TPrinter) : Integer;
var
ScreenPPI: Integer;
PrinterPPI: Integer;
begin
ScreenPPI := GetDeviceCaps(Canvas.Handle, LOGPIXELSX);
{$IFDEF DELPHI}
PrinterPPI := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
PrinterPPI := GetDeviceCaps(APrinter.Handle, LOGPIXELSX);
{$ELSE}
PrinterPPI := Printer.XDpi;
PrinterPPI := APrinter.XDpi;
if PrinterPPI <> 0 then
Result := Round(ScreenPPI / PrinterPPI * Printer.PageWidth)
Result := Round(ScreenPPI / PrinterPPI * APrinter.PageWidth)
else
Result := ScreenPPI * Printer.PageHeight;
Result := ScreenPPI * APrinter.PageHeight;
{$ENDIF}
end;