Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Formulargröße auf HighDPI-Monitor speichern (https://www.delphipraxis.net/200285-formulargroesse-auf-highdpi-monitor-speichern.html)

DieDolly 6. Apr 2019 12:29

Formulargröße auf HighDPI-Monitor speichern
 
Mir ist das gerade zum ersten mal aufgefallen.
Verschiebe ich mein Formular auf meinen 150% DPI-Monitor und beende das Programm, wird die Formulargröße viel zu groß gespeichert.
Was vorher width 1000 war ist jetzt 1500. Scheint normal zu sein. Aber wenn ich das Programm jetzt erneut starte, ist das Fenster nochmal größer als 1500.

Muss man beim Speichern unter HighDPI irgendwas beachten?

Uwe Raabe 6. Apr 2019 12:54

AW: Formulargröße auf HighDPI-Monitor speichern
 
Zitat:

Zitat von DieDolly (Beitrag 1429627)
Verschiebe ich mein Formular auf meinen 150% DPI-Monitor und beende das Programm, wird die Formulargröße viel zu groß gespeichert.
Was vorher width 1000 war ist jetzt 1500. Scheint normal zu sein.

Würde ich auch so sehen: 1000 * 150% = 1500

Zitat:

Zitat von DieDolly (Beitrag 1429627)
Aber wenn ich das Programm jetzt erneut starte, ist das Fenster nochmal größer als 1500.

Vermutlich setzt du die Formulargröße bevor die Skalierung erfolgt. Es ist schon sehr wichtig, wann genau diese Werte gesetzt werden.

Zitat:

Zitat von DieDolly (Beitrag 1429627)
Muss man beim Speichern unter HighDPI irgendwas beachten?

Ich würde die Größe immer vor dem Speichern auf 100% umrechnen, dann hast du auch kein Problem, sollte der Monitor zwischenzeitlich mal eine andere DPI bekommen.

Schwieriger wird es da schon bei der Position. Andererseits sollte man beim Wiederherstellen von Position und Größe immer noch auf die aktuellen Bereiche achten, sonst ist das Form irgendwann mal halb oder ganz verschwunden.

Bernhard Geyer 6. Apr 2019 12:54

AW: Formulargröße auf HighDPI-Monitor speichern
 
Da wird wohl dein Code zum Speichern und wiederherstellen der Fenstergrößen falsch sein.
Ich würde die Speicherung normiert auf 96 dpi durchführen und beim Laden prüfen was du vor dir hast.

DieDolly 6. Apr 2019 12:58

AW: Formulargröße auf HighDPI-Monitor speichern
 
Wie führe ich eine solche normierte 96 DPI Speicherung aus?

Ich übergebe beim Speichern der Formulargröße Form123 an die entsprechende Prozedur, die anschließend AForm.Width und AForm.Height in eine Datei schreibt.

Redeemer 6. Apr 2019 13:20

AW: Formulargröße auf HighDPI-Monitor speichern
 
Ich denke übrigens, dass Delphi z.B. aus 125% (120dpi/96dpi) 146% macht... Warum ist das so?

Bernhard Geyer 6. Apr 2019 13:21

AW: Formulargröße auf HighDPI-Monitor speichern
 
Prüfe auf welchen Monitor Formular liegt (Property Monitor) und welche DPI-Einstellung dieser hat.

Uwe Raabe 6. Apr 2019 13:22

AW: Formulargröße auf HighDPI-Monitor speichern
 
Zitat:

Zitat von Redeemer (Beitrag 1429636)
Ich denke übrigens, dass Delphi z.B. aus 125% (120dpi/96dpi) 146% macht... Warum ist das so?

Und wieso denkst du das?

DieDolly 6. Apr 2019 14:19

AW: Formulargröße auf HighDPI-Monitor speichern
 
Zitat:

Ich denke übrigens, dass Delphi z.B. aus 125% (120dpi/96dpi) 146% macht... Warum ist das so?
Sowas denke ich auch. Kann es aber nicht belegen.

Zitat:

Prüfe auf welchen Monitor Formular liegt (Property Monitor) und welche DPI-Einstellung dieser hat.
Was stelle ich dann mathematisch mit diesen beiden Informationen an?

Ich habe schon Dinge versucht wie NeueBreite = Prozentwert aus (AktuelleBreite, (AktuelleDPI minus 96) ) aber das klappt nicht und gibt einen Wert von rund 700 zurück statt 1000.

Ganz genau genommen ist mein Formular bei 96 DPI 1050 Pixel breit. Nach dem Rüberziehen und Speichern auf einen 144 DPI (150%) Monitor werden daraus 1575. Das sind 33,4% mehr.
Wie ich da wieder auf 1050 komme ist mir ein Geheimnis.

EWeiss 6. Apr 2019 15:25

AW: Formulargröße auf HighDPI-Monitor speichern
 
Zitat:

wird die Formulargröße viel zu groß gespeichert.
Speicher sie so ab wie sie ohne DPI ist.

Und lade sie so ein Windows Skaliert dann automatisch. oder?
Wenn du die größe inklusive DPI abspeicherst nun ja dann skaliert Windows immer höher.

gruss

DieDolly 6. Apr 2019 16:23

AW: Formulargröße auf HighDPI-Monitor speichern
 
Zitat:

Speicher sie so ab wie sie ohne DPI ist.
Ich hole mir die aktuellen Formularwerte Width und Height direkt vom TForm beim speichern.

Ich würde die gerne umrechnen zurück auf 96 DPI aber ich weiß leider nicht wie. Versuche ergeben (wie oben geschrieben) sehr komische Werte die nicht korrekt sein können.

Zitat:

Wenn du die größe inklusive DPI abspeicherst nun ja dann skaliert Windows immer höher.
Genau das ist der Fall aktuell.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:35 Uhr.
Seite 1 von 4  1 23     Letzte »    

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