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/)
-   -   VCL-Form wird nicht skaliert, obwohl Scaled = True (https://www.delphipraxis.net/185242-vcl-form-wird-nicht-skaliert-obwohl-scaled-%3D-true.html)

Harry Stahl 25. Mai 2015 11:58

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?

Harry Stahl 25. Mai 2015 14:20

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.

Bernhard Geyer 25. Mai 2015 14:21

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.

Harry Stahl 25. Mai 2015 14:30

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:
<?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>
Gibt es etwas, was ich hier ändern muss? Welcher Parameter sagt denn genau etwas über die Skalierung aus?

Olli73 25. Mai 2015 15:11

AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
 
Zitat:

Zitat von Harry Stahl (Beitrag 1302956)
Welcher Parameter sagt denn genau etwas über die Skalierung aus?

Müsste
Code:
<dpiAware>
sein.

Siehe hier.

himitsu 25. Mai 2015 15:23

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?

Harry Stahl 25. Mai 2015 18:51

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>

Harry Stahl 25. Mai 2015 19:14

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>

himitsu 25. Mai 2015 19:24

AW: VCL-Form wird nicht skaliert, obwohl Scaled = True
 
PS: Hier im Forum suchenManifest-Creator (falls du öfters mal deine Manifeste falsch zuammenbaust :stupid:)

Harry Stahl 25. Mai 2015 20:03

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 16:41 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