Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Formulare in hohen DPI korrekt anzeigen (https://www.delphipraxis.net/190598-formulare-hohen-dpi-korrekt-anzeigen.html)

Jim Carrey 19. Okt 2016 15:21

Formulare in hohen DPI korrekt anzeigen
 
Ich habe eben mehr oder weniger durch Zufall wie Prozedur
Delphi-Quellcode:
Formular.ScaleBy(Screen.PixelsPerInch, 96);
//
gefunden.

Ich habe die auch direkt ausgetestet und meine auf ein Win7 mit DPI 125% gespeichert.
Die Anwendung ist tatsächlich größer. Generell ist alles größer geau wie erwartet.

Jetzt aber die Frage. Ist das eine absolute Quick & Dirty-Lösung oder kann man sie ruhig so verwenden?
Denn ich habe keine Lust jedes Label, jedes Edit usw auf DPI X anzupassen.

himitsu 19. Okt 2016 15:33

AW: Formulare in hohen DPI korrekt anzeigen
 
Eigentlich machen die VCL-Formulare das von selbst.

In den Formularen (DFM) werden die DPI des Entwicklungsrechners gespeichert (da, wo die DFM zuletzt gespeichert wurde)
und beim Laden der Form, wird es automatisch angepasst. (wenn bei beiden Windows die DPI ordentlich eingestellt waren, bzw. was der Benutzer eingestellt hat > Systemsteuerung\Darstellung und Anpassung\Anzeige)

Delphi-Referenz durchsuchenTForm.PixelsPerInch
Delphi-Referenz durchsuchenTForm.Scaled

Jim Carrey 19. Okt 2016 15:38

AW: Formulare in hohen DPI korrekt anzeigen
 
Ich habe Scaled auf False gestellt und das überall.

Ich meine eigentlich das Aussehen der fertigen Exe-Datei, nicht das Formular in der IDE.

himitsu 19. Okt 2016 16:57

AW: Formulare in hohen DPI korrekt anzeigen
 
Genau das macht Scaled=True.
Erst beim Start der fertigen EXE, aber auch beim Laden in der IDE.

Es werden die aktuellen DPI genommen, mit den in der DFM gespeicherten DPI verrechnet und die Form entsprechend skaliert.

Jim Carrey 19. Okt 2016 17:41

AW: Formulare in hohen DPI korrekt anzeigen
 
Ok das mit der IDE wusste ich nicht.
Dann gehe ich einfach mal davon aus, dass ich nicht drum herum komme hier und da Anpassungen vorzunehmen, damit es bei jeder DPI gleich aussieht, oder?

Darlo 19. Okt 2016 19:03

AW: Formulare in hohen DPI korrekt anzeigen
 
Zitat:

Zitat von Jim Carrey (Beitrag 1351390)
Ok das mit der IDE wusste ich nicht.
Dann gehe ich einfach mal davon aus, dass ich nicht drum herum komme hier und da Anpassungen vorzunehmen, damit es bei jeder DPI gleich aussieht, oder?

VCL ist bei mir ein bisschen her ;-) Aber soweit ich mich erinnere hatte ich immer Form.Scaled auf false und mit der von dir bereits genannten Codezeile gearbeitet
Delphi-Quellcode:
Formular.ScaleBy(Screen.PixelsPerInch, 96);
Weitere Anpassungen waren eigentlich nicht nötig, kommt natürlich immer bisschen auf den GUI-Aufbau drauf an.

Jim Carrey 19. Okt 2016 19:07

AW: Formulare in hohen DPI korrekt anzeigen
 
Bei mir leider schon. Speziell da, wo ich Konstrukte benutze wie...

DAS_IST_EIN_LABEL---[EDIT_FELD]---_TEXT

Sprich: Label mit vielen Leerzeichen, um ein Edit reinzusetzen. Das klappt mit normaler DPI wunderbar, aber ich muss es nun umändern, damit ich bald hohe DPI unterstützen kann.

Darlo 19. Okt 2016 19:10

AW: Formulare in hohen DPI korrekt anzeigen
 
Dann nimm folgenden Aufbau:
[Panel]
->[Label Align Left]"Das ist ein..."[/Label]
->[Edit Align Left]
->[Label Align Left]"Apfelbaum."[/Label]
[/Panel]

Hoffe Du verstehst was ich meine.

Jim Carrey 19. Okt 2016 19:13

AW: Formulare in hohen DPI korrekt anzeigen
 
Ja verstehe ich.
Und das funktioniert?

Weil meine Anwendung ist auch mehrsprachig.

Darlo 19. Okt 2016 19:17

AW: Formulare in hohen DPI korrekt anzeigen
 
Ich arbeite seit XE2 was GUIs ausschließlich mit Firemonkey. Da nehme ich anstatt des Panels ein TLayout und arbeite durchgängig nach diesem Prinzip. Die Skalierung funktioniert fehlerfrei von Android über iOS (Retina und non Retina )bis Windows-Rechner mit diversen DPI-Einstellungen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 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