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

View File

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

View File

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

View File

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