Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Delphi Windows Scaling für komplette Applikation deaktivieren (https://www.delphipraxis.net/209321-windows-scaling-fuer-komplette-applikation-deaktivieren.html)

361 22. Nov 2021 14:32

Windows Scaling für komplette Applikation deaktivieren
 
Hallo zusammen,

ich sitze mal wieder an einer älteren sehr umfangreichen Anwendung, welche mit dem Windows 10 Scaling einfach nicht funktioniert. Den Umbau auf unterstützte Skalierung möchte der Kunde nicht bezahlen. Bei über 1200 Forms und Frames mit diversen Ankern etc. ein großer Aufwand.

Meine Frage lautet: Könnte man die eingestellte Windows-Skalierung nicht für die komplette Anwendung einfach deaktivieren? Es können ruhig alle anderen Anwendungen skaliert sein, aber diese eben nicht. Es kommen bei neuangeschafften Rechnern oder RDP-Zugriffen mit voreingestellter Windows-Skalierung immer wieder solche Anfragen und das Problem, dass Controls abgeschnitten oder falsch dargestellt sind.

Ich habe hier im Forum schon einige Beiträge gelesen (Scaled-Property vom Form), aber nichts passendes gefunden. Könnt Ihr mir weiterhelfen?

NACHTRAG: Die Checkbox "EnableHighDPI" ist bei mir deaktiviert.

VG

DeddyH 22. Nov 2021 14:42

AW: Windows Scaling für komplette Applikation deaktivieren
 
In den Projektoptionen unter "Anwendung - Manifestdatei" den Haken bei "Hochauflösung aktivieren" entfernen, unter meinst Du etwas anderes?

361 22. Nov 2021 14:43

AW: Windows Scaling für komplette Applikation deaktivieren
 
Hi,

mein Nachtrag hat sich zeitlich mit Deiner Antwort überschnitten. Das habe ich schon deaktiviert. Trotzdem wird die Anwendung immer skaliert angezeigt.

DeddyH 22. Nov 2021 14:46

AW: Windows Scaling für komplette Applikation deaktivieren
 
Hast Du auf die Build-Konfiguration geachtet? Man kann/muss das für Debug und Release jeweils getrennt einstellen.

361 22. Nov 2021 14:51

AW: Windows Scaling für komplette Applikation deaktivieren
 
Hi,

ja diese sind alle deaktiviert. Das Projekt nutzt eine rc-Datei, muss dort vielleicht irgendwas noch eingestellt werden?

361 22. Nov 2021 14:53

AW: Windows Scaling für komplette Applikation deaktivieren
 
...ich habe es mal mit einem neuen Testprojekt ausprobiert, aber dort wird ein cxGrid und ein Button auch mit vergrößerter Schrift angezeigt. Ich möchte ja eben nicht, dass die vergrößerten Schriften in der Anwendung übertragen werden.´

Ergänzung: Wenn ich vom Form Scaled deaktiviere, sieht es gut aus. Aber ich kann das nicht für alle Forms machen. Einen einfacheren Weg gibt es nicht?

BerndS 22. Nov 2021 15:44

AW: Windows Scaling für komplette Applikation deaktivieren
 
Ich habe hier kein 10.2 mehr, aber in 10.4 gibt es die Option GDI-Skalierung. Zwar habe das noch nicht verwendet, aber es könnte Window dazu veranlassen, die Skalierung selbst zu berechnen.

hoika 22. Nov 2021 17:02

AW: Windows Scaling für komplette Applikation deaktivieren
 
Hallo,
reicht es nicht, dass in der jeweiligen Desktop-Verknüpfung auszuschalten?
Eigenschaften/ Kompatibilität/ Button "Hohe DPI-Einstellungen ändern"
und dort unten "Hohe DPI-Skalierung überschreiben -> Anwendung"


Dazu müsstest Du dann ev. trotzdem noch "Scaled=False" in jedem Form setzen,
und zwar direkt in der IDE (zur Laufzeit ist es zu spät).

dummzeuch 22. Nov 2021 17:28

AW: Windows Scaling für komplette Applikation deaktivieren
 
Zitat:

Zitat von 361 (Beitrag 1497986)
Ergänzung: Wenn ich vom Form Scaled deaktiviere, sieht es gut aus. Aber ich kann das nicht für alle Forms machen. Einen einfacheren Weg gibt es nicht?

Falls Deine Forms alle von einem gemeinsamen Form abgeleitet sind, kannst Du dort in der Methode Loaded Scaled := False setzen. Das wäre früh genug.

Ansonsten dürfte es auf viel Handarbeit oder ein Tool hinauslaufen, um alle .dfm-Dateien anzupassen. Letzteres ist nicht weiter schwierig.

THY4243 22. Nov 2021 19:33

AW: Windows Scaling für komplette Applikation deaktivieren
 
@361, Du schreibst, dass das Projekt eine eigene *.rc Datei verwendet.

Da lässt sich auch ein Manifest einbauen. Wenn Du möchtest, dass keine Skalierung stattfindet, dann sollte folgender Teil genügen (Die DPI Passage des Manifests aus der rc-Datei):
Code:
  // <!-- SetProcessDPIAware Function - xmlns:asmv3=\"urn:schemas-microsoft-com:asm.v3\" required in assembly -->
  " <asmv3:application xmlns=\"urn:schemas-microsoft-com:asm.v3\">\15\12",
  "   <asmv3:windowsSettings>\15\12",
  "     <dpiAware xmlns=\"http://schemas.microsoft.com/SMI/2005/WindowsSettings\">false</dpiAware>\15\12",
  "     <dpiAwareness xmlns=\"http://schemas.microsoft.com/SMI/2016/WindowsSettings\">unaware</dpiAwareness>\15\12",
  "     <gdiScaling xmlns=\"http://schemas.microsoft.com/SMI/2017/WindowsSettings\">false</gdiScaling>\15\12",
  "   </asmv3:windowsSettings>\15\12",
  " </asmv3:application>\15\12",
Bitte nicht über die führenden und abschließenden Anführungszeichen wundern. Diese sind erforderlich, wenn man zusätzlich zu den Versionsinfos auch das Manifest in einer selbst gepflegten Resourcedatei hat und der EMBA Resourcecompiler das umsetzen können soll.

Aber vielleicht ist eine Umstellung auf die Skalierung nicht so aufwändig. Dann natürlich ein anderes Manifest und evtl. hilft auch dieser Link mit der dort zu findenden Unit uStandardizeFonts: https://pastebin.com/dKpfnXLc
Der Aufruf jeweils in der Prozedur FormCreate mit "StandardizeFormFont(Self);" sollte klappen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.
Seite 1 von 2  1 2      

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