From 6a75e8c404dda7bfd1705db1dfa008a9307853db Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Thu, 18 Jul 2019 07:52:59 +0200 Subject: [PATCH] Issue #718: Fonts may be too large because they get scaled before the window gets moved to the wanted screen. So, this moves the code for scaling fonts to FormShow, so we can scale fonts according to the screen's DPI setting. --- source/extra_controls.pas | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/source/extra_controls.pas b/source/extra_controls.pas index 7f971d3d..215dadd1 100644 --- a/source/extra_controls.pas +++ b/source/extra_controls.pas @@ -9,10 +9,14 @@ uses type // Form with a sizegrip in the lower right corner, without the need for a statusbar TExtForm = class(TForm) + private + FFontSet: Boolean; public constructor Create(AOwner: TComponent); override; procedure AddSizeGrip; class procedure InheritFont(AFont: TFont; Form: TForm); + protected + procedure DoShow; override; end; // Memo replacement which accepts any line break format TLineNormalizingMemo = class(TMemo) @@ -30,9 +34,22 @@ implementation constructor TExtForm.Create(AOwner: TComponent); begin inherited; - InheritFont(Font, Self); + FFontSet := False; end; + +procedure TExtForm.DoShow; +begin + // Expect the window to be on the wanted monitor now, so we can scale fonts according + // to the screen's DPI setting + if not FFontSet then begin + InheritFont(Font, Self); + FFontSet := True; + end; + inherited; +end; + + procedure TExtForm.AddSizeGrip; var FGripper: TSizeGripThemed;