Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Control-Skalierung unter Windows 10 (https://www.delphipraxis.net/200653-control-skalierung-unter-windows-10-a.html)

Benmik 12. Mai 2019 18:26

Control-Skalierung unter Windows 10
 
Ich bin kürzlich auf Windows 10 umgestiegen, weil ich mir einen 4K-Monitor zugelegt habe. Natürlich musste ich dann die Skalierung ändern, sie steht zurzeit auf 175%. (Eigentlich hat so ein 4K-Monitor nur Nachteile, außer bei seinem Hauptzweck, dem Anzeigen von Bildern und Videos). Ich habe auf meinen Forms zig Textboxen, Panels und so weiter, die jetzt in großer Zahl verschoben und verknautscht sind. Die Formen stehen alle auf Scaled, eine Reihe von Größen funktionieren auch; ich glaube, wenn Text oder Aufschriften ins Spiel kommen, dann werden sie vergrößert, aber der Container nicht, vor allem nicht vertikal.

Muss ich das alles jetzt händisch machen oder gibt es da einen einfacheren Weg?

Uwe Raabe 12. Mai 2019 18:30

AW: Control-Skalierung unter Windows 10
 
Am schnellsten bekommst du das weg, wenn du die High-DPI Unterstützung im Manifest deaktivierst.

Soll die aber erhalten bleiben, dann musst du schon konkret zeigen, was du machst und was dann nicht funktioniert. Es gibt keine pauschalen Empfehlungen für diese Problematik, da man dort an zu vielen Stellmöglichkeiten was kaputt machen kann.

Bernhard Geyer 12. Mai 2019 18:40

AW: Control-Skalierung unter Windows 10
 
Also ich habe auch einen 4k (zweitmonitor) und habe mit 10.2 (fast) keine Probleme.
Oft liegt es an einen Code oder "Altforms" welche seit den Umstieg D6->X6->10.2 noch nicht neu gespeichert wurden.

In 10.3 gib es glaube ich durch übearbeitung des HighDPI-Funktionalität noch ein paar "Baustellen" die man selbst umschiffen muss.
Evtl. auch alte Controls funktionieren wegen fehlender Anpassung an neue Delphi-Versionen nicht richtig (Skalierungsmethode gibts jetzt in erweiterter Version).

Benmik 12. Mai 2019 19:47

AW: Control-Skalierung unter Windows 10
 
Das Umstellung in den Projektoptionen - Manifest von "Über Monitor V2" auf "Keiner" hatte durchschlagenden Erfolg, alles sah aus wie vorher.

Nur handelt es sich ja um ein Bildanzeigeprogramm. Und dann werden die Bilder leider mitskaliert und der Vorteil eines hochauflösenden Monitors ist dahin.

Zu einem Teil ist es auch so, dass ich Controls - in der Regel TPanel - je nach Inhalt anpassen muss. Das hatte ich zum Teil mit absoluten Pixelangaben gemacht, was mir jetzt natürlich auf die Füße fällt. Gibt es eine Möglichkeit, einen Faktor zu ermitteln?

old7 12. Mai 2019 21:23

AW: Control-Skalierung unter Windows 10
 
K.A. ob's Dir weiterhilft, aber bei allen meinen Forms habe ich damals (uraltes Delphi7pe) im OI auf
scaled := false;
umgestellt und überlasse seitdem das Skalieren den Systemeinstellungen von Windows (>=8). Keine Probleme dadurch/damit. Benutze aber auch nur einen Monitor und 100-150% für's Skalieren durch Windows und keine in die Skalierung reinfummelnden Manifeste.

Uwe Raabe 12. Mai 2019 22:12

AW: Control-Skalierung unter Windows 10
 
Zitat:

Zitat von old7 (Beitrag 1432031)
scaled := false;
umgestellt und überlasse seitdem das Skalieren den Systemeinstellungen von Windows

Das entspricht exakt dem Verhalten mit der DPI-Option "keine" und führt zu der unscharfen Bilddarstellung, da Windows einfach die Pixel vergrößert.

Benmik 12. Mai 2019 22:28

AW: Control-Skalierung unter Windows 10
 
So isses, das hatte ich auch schon probiert, da ich vorher ja etwas rumgelesen hatte.

Es scheint ja keinen Zauberweg zu geben. Ich habe jetzt so eine Art (Frickel-)Lösung gefunden. Man hätte sich schon denken können, dass absolute Pixelangaben einem irgendwann mal auf die Füße fallen.

old7 12. Mai 2019 22:45

AW: Control-Skalierung unter Windows 10
 
@Uwe Raabe: Was würdest Du empfehlen? Gibt es überhaupt eine (eher allgemeingültige) Empfehlung bezüglich "scaled := ?????" bei neueren Delphis?

Was meinst Du mit "der unscharfen Bilddarstellung"? Graphiken auf/in den Forms oder auch die Textdarstellung auf/in den Formularen? Oder das Zoomen von Windows (auf über 100%) allgemein?

Uwe Raabe 13. Mai 2019 06:49

AW: Control-Skalierung unter Windows 10
 
Zitat:

Zitat von old7 (Beitrag 1432037)
@Uwe Raabe: Was würdest Du empfehlen? Gibt es überhaupt eine (eher allgemeingültige) Empfehlung bezüglich "scaled := ?????" bei neueren Delphis?

Solange man nicht selbst an der Skalierung von Forms rumfummelt, was unter High-DPI Gesichtspunkten eigentlich nur kontraproduktiv sein kann, sollte Scaled immer auf True stehen. Je nach Delphi- und Windows-Version kommt man mit einem passenden Manifest sicher noch am ehesten zum Ziel.

Zitat:

Zitat von old7 (Beitrag 1432037)
Was meinst Du mit "der unscharfen Bilddarstellung"? Graphiken auf/in den Forms oder auch die Textdarstellung auf/in den Formularen? Oder das Zoomen von Windows (auf über 100%) allgemein?

Wenn die Anwendung selbst nicht als DPI-aware erstellt wurde, übernimmt Windows die Skalierung. Dabei wird z.B. auf einem 200% System einfach jedes Pixel verdoppelt bzw. bei anderen Skalierungen entsprechend interpoliert. Das führt dann zu einer verwaschenen oder verpixelten Darstellung.

Für Schriften kann man da noch etwas rausholen, wenn man unter Windows in den Eigenschaften bei Kompatibilität - Hohe DPI-Skalierung überschreiben das System (Erweitert) einstellt. Dabei bleiben aber Grafiken wie Icons und Bilder unberührt.

Die High-DPI Unterstützung wird mit jeder Windows- und Delphi-Version besser. Für halbwegs normale Anwendungen sollte das aktuell auch ausreichen, aber es gibt halt immer Sonderfälle, die noch nicht so richtig abgedeckt sind. Da muss man dann im Einzelfall nach Lösungen suchen oder halt Kompromisse eingehen.

bcvs 13. Mai 2019 10:29

AW: Control-Skalierung unter Windows 10
 
Zitat:

Zitat von Benmik (Beitrag 1432030)
Gibt es eine Möglichkeit, einen Faktor zu ermitteln?

Ja:
Delphi-Quellcode:
Screen.PixelsPerInch/96
Wobei die 96 davon ausgeht, dass du deine Forms in der IDE mit 100% designst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 Uhr.
Seite 1 von 3  1 23      

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