Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

Uwe Raabe 13. Mai 2019 11:13

AW: Control-Skalierung unter Windows 10
 
Zitat:

Zitat von bcvs (Beitrag 1432064)
Delphi-Quellcode:
Screen.PixelsPerInch/96

Funktioniert aber nur dann, wenn alle Monitore im System die gleiche DPI haben bzw. die Anwendung nicht Per Monitor DPI Aware unterstützt.

Den aktuellen DPI-Wert für ein Form bekommt man mit der protected function GetParentCurrentDpi. Der Parent eines Forms ist in der Regel nil, was dann den Wert des Forms liefert.

Alfonso 4. Jun 2019 19:29

AW: Control-Skalierung unter Windows 10
 
Ich habe festgestellt, dass wenn ich eine Rio Anwendung mit High DPI erstelle und (Monitorv2) und ich die Anwendung im 4 K Monitor starte, wo alles super aussieht, und dann auf ein Full HD bildschirm verschiebe, sich nichts tut. Das Fenster bleibt dann riesig, die Controls auch. Eigentlich sollte sich das Fenster dann doch automatisch verkleiner.
Setzte ich DPI auf "keiner", dann verhält sich das Formular wie erwartet.

Woran liegt das?

Uwe Raabe 4. Jun 2019 20:59

AW: Control-Skalierung unter Windows 10
 
Welche Windows Version?
Welche Skalierung ist auf den einzelnen Monitoren eingestellt?
Welche Skalierung hat der primäre Monitor?

Alfonso 4. Jun 2019 21:13

AW: Control-Skalierung unter Windows 10
 
Windows 10 1809
Primärmonitor 4K 200%
Sekundärmonitor Full HD 100%

Uwe Raabe 4. Jun 2019 22:46

AW: Control-Skalierung unter Windows 10
 
Wenn beide Monitore dieselbe Größe haben, dann sollte das Form auch auf beiden Monitoren gleich groß dargestellt werden. Auf dem 4k Monitor hat es halt nur doppelt so viele Pixel in X und Y.

Kannst du ein Beispielprojekt anhängen und genau beschreiben, was du erwartest und was passiert.

Benmik 6. Jun 2019 21:19

AW: Control-Skalierung unter Windows 10
 
Ich habe eine Form, wo der Anwender Optionen einstellen kann. Naturgemäß gibt es da zahlreiche GroupBoxen mit CheckBoxes, OptionButtons, Edits und so weiter; dazu werden die auch noch je nach Situation dynamisch angepasst, ein- und ausgeblendet, wodurch sich die Höhe der GroupBoxes und auch mal die des PageControls ändert. Ich habe natürlich alle absoluten Pixelangaben entfernt und mir eine Funktion geschrieben, die mir das alles einrichtet. Jetzt klappt alles unter allen Auflösungen und Skalierungen, aber es war eine völlig abartige Arbeit. Das kann es auf Dauer nicht sein.

Uwe Raabe 6. Jun 2019 21:27

AW: Control-Skalierung unter Windows 10
 
Dann solltest du nicht mit Left, Top, Width und Height arbeiten, sondern mit Align und AlignWithMargins. Sobald du dynamisch Positionen oder Größen setzt, musst du wohl oder übel den aktuellen DPI-Wert berücksichtigen. Wie sollte das auch sonst gehen?

Benmik 6. Jun 2019 21:59

AW: Control-Skalierung unter Windows 10
 
Liste der Anhänge anzeigen (Anzahl: 2)
Naja, nehmen wir mal das angehängte Beispiel. Unter Windows 10 und einem 4K-Monitor bei einer Skalierung von 175% sah mein schönes Fenster plötzlich so aus (Bild 1). Vorher (und jetzt wieder) sah es ordentlich aus (Bild 2). In aller Regel ist es so, dass Breite keine Problem ist, Höhe wohl.

Die Lösung, die ich gefunden habe, ist garantiert keine, die den Embarcadero-Schönheitspreis gewinnen wird. Meine Prozedur nimmt das unterste Control, das in der GroupBox ist, und bestimmt danach die Höhe der GroupBox, also Top + Height + RandUnten. Dadurch wird es egal, was Windows mit der Skalierung treibt, ich orientiere mich an den tatsächlichen Verhältnissen, ohne genau zu wissen, ob und wieviel Windows da skaliert. In der Praxis funktioniert's.

Bernhard Geyer 7. Jun 2019 10:43

AW: Control-Skalierung unter Windows 10
 
Zitat:

Zitat von Benmik (Beitrag 1434086)
Naja, nehmen wir mal das angehängte Beispiel. Unter Windows 10 und einem 4K-Monitor bei einer Skalierung von 175% sah mein schönes Fenster plötzlich so aus (Bild 1). Vorher (und jetzt wieder) sah es ordentlich aus (Bild 2). In aller Regel ist es so, dass Breite keine Problem ist, Höhe wohl.

Kann auch sein das Windows mal wieder mist gebaut hat.
Habe hier auch schon den Fall gehabt das selbst der Windows Explorer nicht mehr richtig beim verschieben vom 2k (100%) auf den 4k (200%) Monitor richtig neu gezeichnet wurde.

Rolf Frei 7. Jun 2019 11:56

AW: Control-Skalierung unter Windows 10
 
Zitat:

Zitat von Benmik (Beitrag 1434086)
Naja, nehmen wir mal das angehängte Beispiel. Unter Windows 10 und einem 4K-Monitor bei einer Skalierung von 175% sah mein schönes Fenster plötzlich so aus (Bild 1). Vorher (und jetzt wieder) sah es ordentlich aus (Bild 2). In aller Regel ist es so, dass Breite keine Problem ist, Höhe wohl.

Die Lösung, die ich gefunden habe, ist garantiert keine, die den Embarcadero-Schönheitspreis gewinnen wird. Meine Prozedur nimmt das unterste Control, das in der GroupBox ist, und bestimmt danach die Höhe der GroupBox, also Top + Height + RandUnten. Dadurch wird es egal, was Windows mit der Skalierung treibt, ich orientiere mich an den tatsächlichen Verhältnissen, ohne genau zu wissen, ob und wieviel Windows da skaliert. In der Praxis funktioniert's.

Haben deine Forms AutosSroll=True? Das führt genau zu diesem Effekt. Daher immer alle Forms mit AutoScroll=False speichern udn das Prooperty zur Runtime setzen. Hast du eventuell noch etwas in Constraint definert, das du vergessen hast zur Runtime umzurechnen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr.
Seite 2 von 3     12 3      

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