Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Dpi Awareness und Windowsskalierung (https://www.delphipraxis.net/189983-dpi-awareness-und-windowsskalierung.html)

Manfred D2009 16. Aug 2016 16:43

Dpi Awareness und Windowsskalierung
 
Hallo,

ich verwende die Version Delphi Berlin um eine bestehende Anwendung dpi-aware zu machen. Die Skalierungseinstellungen von Windows werden ja jetzt weitestgehend berücksichtigt :?

Da die Kombination der Windowseinstellung und des verwendeten Monitors manchmal für meine Anwendung nicht optimal aussieht, andere Anwendungen aber ganz passabel ausschauen, würde ich gerne meine Anwendung eine Stufe größer oder auch mal kleiner als den Windowsstandard haben.

Gibt es eine Möglichkeit wie man eine Anwendung zusätzlich skaliert, ohne dass die Windowseinstellungen verändert werden müssen und ohne dass andere Programme beeinflusst werden?

jaenicke 17. Aug 2016 06:30

AW: Dpi Awareness und Windowsskalierung
 
Hast du es einmal mit ScaleBy versucht? Eine ausführliche Übersicht findest du in der Doku:
http://docwiki.embarcadero.com/RADSt...Steuerelemente

Manfred D2009 17. Aug 2016 07:57

AW: Dpi Awareness und Windowsskalierung
 
Die Routine ScaleBy habe ich anfangs kurz ausprobiert, habe diesen Ansatz aber bald wieder verworfen, da hier dann doch noch für mich zu viele Details zu berücksichtigen wären wie z.B. die Größenanpassungen und Positionierungen der Controls.

Die Skalierung eines Formulars beim Einlesen (also vor dem Loaded) funktioniert seit Berlin ja eigentlich sehr gut. Gäbe es nicht da eine Möglichkeit einzugreifen?

jaenicke 17. Aug 2016 12:33

AW: Dpi Awareness und Windowsskalierung
 
Diese wird mit ScaleBy gemacht. ;-)

Was du versuchst wurde in diesem Thread besprochen:
http://www.delphipraxis.net/189715-s...ie-helper.html

Einen Bug gibt es da auch noch:
http://www.delphipraxis.net/189426-d...gecontrol.html

Manfred D2009 18. Aug 2016 10:20

AW: Dpi Awareness und Windowsskalierung
 
Das Setzen der PixelsPerInch über die Helperklasse funktioniert für meine Formulare recht ordentlich. Bei einem Mehrbildschirmsystem wird für die Skalierung allerdings die Einstellung der einzelnen Monitore verwendet.

Ich habe in der Zwischenzeit mal die Methode ScaleForPPI für meine Formulare überschrieben. Dort kann ich eine neue Auflösung mitgeben, was für meine Anforderung gut funktioniert. Jetzt habe ich aber noch ein aktuelles Problem beim Verschieben eines Formulars von einem Monitor auf einen anderen, der eine andere Auflösung hat. Da wird über die WMDpiChanged Botschaft eine Skalierung gemacht, die ich nicht so einfach manipulieren kann.

Gibt es da evtl. eine Möglichkeit?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr.

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