Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Delphi 11.2 Patch 1 – immer noch Probleme mit High DPI? (https://www.delphipraxis.net/211699-delphi-11-2-patch-1-%96-immer-noch-probleme-mit-high-dpi.html)

det33 24. Okt 2022 16:09

Delphi 11.2 Patch 1 – immer noch Probleme mit High DPI?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,

ich entwickle auf einem System mit einem 5K Monitor (5120x2160 – Skalierung 150%). Bei Delphi ist unter High DPI „Automatic (Screen PPI)“ gewählt. Bei neuen VCL-Formularen wird PixelsPerInch = 144 gesetzt.

Bei einer kleinen Testanwendung habe ich auf einem Formular:

• eine TCategoryPanelGroup mit einem Panel und darauf 3 TLabel- und 3 TEdit-Komponenten
• ein TDBCtrlGrid, ebenfalls mit 3 TLabel- und 3 TDBEdit-Komponenten
• ein TPanel, ebenfalls mit 3 TLabel- und 3 TEdit-Komponenten

Bei den Projektoptionen ist „Über Monitor v2“ gewählt.

Auf meinem System wird das Formular durch das fertige Programm wie im Bild1 angezeigt.

Auf einem anderen System mit 1920x1080 – Skalierung 100% wird das Formular wie im Bild2 angezeigt.

Bei dem Panel mit den Labels 4-6 und den Edit-Komponenten wird das Formular richtig skaliert. Bei dem CategoryPanel und bei dem DBCtrlGrid werden die Labels und die Edit-Komponenten falsch bzw. gar nicht skaliert. Besonders auffällig ist dies bei den Edit-Komponenten, wo ParentFont = false ist und Style = fsBold gewählt wurde. Bei dem „normalen“ Panel passiert dies nicht.

Hat jemand ähnliche Erfahrungen bzw. gibt es immer noch Probleme mit der Skalierung unter High DPI?

Uwe Raabe 24. Okt 2022 16:26

AW: Delphi 11.2 Patch 1 – immer noch Probleme mit High DPI?
 
Es gibt in der Tat immer noch Probleme bei Controls mit ParentFont = False. Wenn du da einen Fall reproduzieren kannst, solltest du dafür einen Bugreport anlegen.

Als Workaround habe ich mir für Controls mit abweichenden Font-Eigenschaften (Farbe, Style) einen Helper geschrieben, den ich nach einem DPI-Change mit den passenden Werten aufrufe.
Delphi-Quellcode:
type
  TControlHelper = class helper for TControl
  public
    procedure SetFontColorStyle(AColor: TColor; AStyle: TFontStyles);
  end;

...

procedure TControlHelper.SetFontColorStyle(AColor: TColor; AStyle: TFontStyles);
begin
  ParentFont := True;
  if AColor <> clNone then
    Font.Color := AColor;
  Font.Style := AStyle;
end;

...

  pnlDirCaption.SetFontColorStyle(clNone, [TFontStyle.fsBold]);

det33 25. Okt 2022 14:08

AW: Delphi 11.2 Patch 1 – immer noch Probleme mit High DPI?
 
Danke für den Hinweis mit dem Helper. Da die Position auf dem Formular dann immer noch falsch ist, werde ich wohl notgedrungen bei der 96 DPI-Einstellung in der Arbeitsumgebung bleiben. Bugreport ist auf dem Weg.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz