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

@ -307,7 +307,7 @@ Contributor(s): "/>
</Item68>
<Item69>
<Filename Value="source\vpganttviewpainter.pas"/>
<UnitName Value="vpganttviewpainter"/>
<UnitName Value="VpGanttViewPainter"/>
</Item69>
</Files>
<CompatibilityMode Value="True"/>
@ -316,13 +316,16 @@ Contributor(s): "/>
<OutDir Value="languages"/>
<EnableI18NForLFM Value="True"/>
</i18n>
<RequiredPkgs Count="2">
<RequiredPkgs Count="3">
<Item1>
<PackageName Value="LCL"/>
<PackageName Value="Printer4Lazarus"/>
</Item1>
<Item2>
<PackageName Value="FCL"/>
<PackageName Value="LCL"/>
</Item2>
<Item3>
<PackageName Value="FCL"/>
</Item3>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>

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;

View File

@ -14,7 +14,6 @@ object frmPrintPreview: TfrmPrintPreview
OnCreate = FormCreate
OnKeyDown = FormKeyDown
OnShow = FormShow
LCLVersion = '2.3.0.0'
object Panel1: TPanel
Left = 0
Height = 56
@ -51,7 +50,7 @@ object frmPrintPreview: TfrmPrintPreview
end
object ToolButton3: TToolButton
Left = 55
Height = 5
Height = 25
Top = 0
Caption = 'ToolButton3'
ImageIndex = 2
@ -87,7 +86,7 @@ object frmPrintPreview: TfrmPrintPreview
end
object ToolButton8: TToolButton
Left = 152
Height = 5
Height = 25
Top = 0
Caption = 'ToolButton8'
ImageIndex = 6

View File

@ -168,6 +168,7 @@ implementation
{$ENDIF}
uses
OSPrinters,
VpConst, // needed for define VP_LCL_SCALING
VpPrtFmt;
@ -279,7 +280,7 @@ begin
EditForm.VpPrintPreview1.EndDate := EndDate;
EditForm.VpPrintPreview1.ZoomFactor := ZoomFactor;
EditForm.cboxZoom.ItemIndex := Integer(ZoomFactor);
EditForm.VpPrintPreview1.Printer := Printer;
EditForm.VpPrintPreview1.Printer := Printers.Printer;
EditForm.VpPrintPreview1.ForceUpdate;
EditForm.VpPrintPreview1.FirstPage;
EditForm.DrawingStyle := FDrawingStyle;