![]() |
VCL-Form wird nicht skaliert, obwohl Scaled = True
Ich habe mir ein Surface Pro 3 gekauft, das hat ja eine ziemlich hohe Bildschirmauflösung, daher habe ich die Systemskalierung auf 175% gestellt, damit das alles noch gut lesbar ist.
Bei 2 meiner Programme werden die Forms nicht skaliert, obwohl alle die Einstellung "scaled = True" haben. Die Programme hatte ich von XE nach XE7 übernommen. Die XE-Versionen werden richtig skaliert. Ich habe allerdings auch andere XE7-Programme, die ich entweder übernommen oder neu erstellt habe, wo alles richtig skaliert wird. Ich bin hier im Moment ziemlich ratlos. Hat jemand evtl. mal vor einem ähnlichen Problem gestanden und hat einen Tipp für mich? |
AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
Ergänzung: Wenn man unter Windows in den Kompatibilitätseinstellungen die Option "Skalierung bei hohem DPI-Wert deaktivieren" aktiviert, dann werden zumindest die Schriften halbwegs richtig in der Größe skaliert angezeigt.
Die Grafiken werden allerdings nicht skaliert, bleiben also klein, das sieht schon etwas seltsam aus. |
AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
Schau dir mal die Manifestsektion in der Exe an? Je nach Eintrag für Kompatiblität oder "ich kann Skalieren" verhält sich die Exe anders.
|
AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
Das sind die Manifest-Einstellungen, bis auf die Programmnamen identisch mit einer anderen Manifest-Datei, wo es beim Programm aber wie gewünscht funktioniert:
Delphi-Quellcode:
Gibt es etwas, was ich hier ändern muss? Welcher Parameter sagt denn genau etwas über die Skalierung aus?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="PC-Notizz.exe" type="win32"/> <description>Hastasoft PC-Notizz!</description> <!-- Identify the application security requirements. --> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="AsInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- Windows 8.1 --> <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> <!-- Windows Vista --> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!-- Windows 7 --> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> <!-- Windows 8 --> <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> </application> </compatibility> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/> </dependentAssembly> </dependency> </assembly> |
AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
Zitat:
Code:
sein.
<dpiAware>
Siehe ![]() |
AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
Mit <dpiAware> sagt man Windows, ob das Programm mit hochauflösenden Displays klar kommt und nicht (von Windows) skaliert werden muß.
Was für eine DPI ist denn bei deiner Form eingestellt? |
AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
Mit DPI-Wert meinst Du wahrscheinlich PixelsPerInch? Das sind 96, halt die Größe zur Entwicklungszeit.
Ich habe das Manifest nun mal mit dem DPI-Aware Punkt ergänzt, aber egal, ob ich dort true oder false setze, es wird nicht skaliert.
Code:
<assemblyIdentity version="1.0.0.0"
processorArchitecture="X86" name="PC-Notizz.exe" type="win32"/> <description>Hastasoft PC-Notizz!</description> <!-- Identify the application security requirements. --> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="AsInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> <asmv3:application> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>true</dpiAware> </asmv3:windowsSettings> </asmv3:application> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- Windows 8.1 --> <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> <!-- Windows Vista --> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!-- Windows 7 --> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> <!-- Windows 8 --> <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> </application> </compatibility> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/> </dependentAssembly> </dependency> </assembly> |
AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
OK, musste den Eintrag etwas anders machen, so funktioniert es nun:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="PC-Notizz.exe" type="win32"/> <description>Hastasoft PC-Notizz!</description> <!-- Identify the application security requirements. --> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="AsInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>false</dpiAware> </asmv3:windowsSettings> </asmv3:application> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- Windows 8.1 --> <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> <!-- Windows Vista --> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!-- Windows 7 --> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> <!-- Windows 8 --> <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> </application> </compatibility> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/> </dependentAssembly> </dependency> </assembly> |
AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
PS:
![]() |
AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
So, abschließend noch ein Dankeschön für die Hinweise.
Himitsu, Dein Tool macht einen guten Eindruck. Auf jeden Fall sehr praktisch, dass man sich die Erläuterungen auch noch zu den einzelnen Einstelldingen ansehen kann, z.B. auch hier gut für DPI-Aware. :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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