Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Konstante beim kompilieren mit Batch setzten (https://www.delphipraxis.net/183566-konstante-beim-kompilieren-mit-batch-setzten.html)

Robocolder 20. Jan 2015 15:02

Konstante beim kompilieren mit Batch setzten
 
Hallo, :)
Ich habe mich neulich mit DPI und Delphi auseinander gesetzt und versuche gerade eine Art Batch an den Compiler zu hängen,
um die aktuelle DPI des Systems raus zu finden, von dem aus am Projekt gearbeitet wird.
Das Problem ist, das wenn Formulare auf verschiedenen System mit unterschiedlichen DPI erstellt, es passieren kann, dass
die Formulare unterschiedlich dargestellt werden. Um das zu verhindern wollte ich die aktuellen DPI des Systems als Konstante
erst beim kompilieren setzten.
Wäre super wenn mir jemand helfen könnte, wie man sowas umsetzten kann.

Gruß
Robin :)

Klaus01 20. Jan 2015 15:14

AW: Konstante beim kompilieren mit Batch setzten
 
.. Du willst doch nicht wirklich für jede verschieden Auflösung (DPI) ein
seperate Applikation erstellen?

Oder habe Deinen Post missverstanden?

Herzlich willkommen in der DP.

Grüße
Klaus

Bernhard Geyer 20. Jan 2015 15:28

AW: Konstante beim kompilieren mit Batch setzten
 
Definiere Unterschiedlich dargestellt!
Normalerweise sollten unterscheidliche DPI-Einstellungen (bis auf Rundungsfehler) kein Problem darstellen wenn man sich an gewisse Regeln hält. Neuere Delphi-Versionen sind AFAIK auch Problemloser da einige Macken der VCL mit unterschiedlichen DPI-Einstellungen behoben wurden.

Robocolder 20. Jan 2015 15:36

AW: Konstante beim kompilieren mit Batch setzten
 
@Klaus01
Um Gotteswillen nein :D
Das Problem ist, dass wir zu mehreren an einer Anwendung arbeiten. Da es vorkommen kann, dass jemand aus seinem System eine andere DPI eingestellt hat
z.B 150% 120 DPI, kam es zu einigen Fehlern. Paintbox aus Formular verschoben u.ä.

Die Batch soll die aktuelle DPI des System auslesen und vor dem kompilieren eine Konstante mit diesem Wert setzten.

Gruß
Robin :)

Bernhard Geyer 20. Jan 2015 15:42

AW: Konstante beim kompilieren mit Batch setzten
 
Und was soll das bringen?
Es wird bei jedem Formular mitgespeichert unter welcher DPI-Einstellung es gespeichert wurd und beim darstellen zur Laufzeit wird
das mit der dann gültigen DPI-Einstellung kombiniert um die real anzuwendente Skalierung zu bestimmen. Und bis auf Rundungsfehler passt das auch. Ein weiter DPI-Wert ist m.E. unnötig.

Zeig doch mal ein Beispiel wo was falsch wäre und wie du es korrigieren willst.

himitsu 20. Jan 2015 17:16

AW: Konstante beim kompilieren mit Batch setzten
 
Welche Delphi-Version nutzt ihr?

Wenn ich auf meinem Schlepptop arbeite, der mal mit 125% eingestellt war, dann wurden alle Positionswerte vom Delphi (XE) automatisch angepasst.
Wenn ich die Form bei mir geladen hatte, "durch 3/4" und wenn ich die Form wieder auf einem anderem Rechner öffnete alles "mal 3/4" ... war nur nervig in der Versionsverwaltung, weil die Masse an Änderungen die eigentlichen Änderungen untergehen lässt.

Aber bis auf die Rundungsfehler gab es sonst keine Probleme.

Robocolder 21. Jan 2015 10:44

AW: Konstante beim kompilieren mit Batch setzten
 
Da bei zu hoher DPI auf dem Zielsystem Schriften aus ihren Komponenten reich, werden alle Elemente in einem Formular mit Self.ScaleBy(Screen.PixelsPerInch, 96) skaliert.
Diese 96 sind die DPI des Systems auf dem kompiliert wurde. Wenn auf einem System mit 120 DPI designed wurde und diese Konstante noch auf 96 DPI steht, gibt es bei einer möglichen Skalierung auf dem Zielsystem Skalierungsfehler.
Deswegen würde ich gerne die DPI-Konstante beim kompilieren automatisch setzten, da beim Arbeiten am Projekt schnell vergessen werden kann, diese Konstante anzupassen.

@himitsu
Wir benutzen Rad Studio XE 2

Gruß
Robin :)

Robocolder 26. Jan 2015 11:21

AW: Konstante beim kompilieren mit Batch setzten
 
Liste der Anhänge anzeigen (Anzahl: 4)
An diesem Beispiel sieht man vielleicht das Problem besser :)
Ich habe das gleiche Programm einmal mit 100 % = 96 DPI und einmal mit 120 % = 120 DPI kompiliert.
Zielsystem läuft auf 100% = 96 DPI.

Bei den Komponenten auf dem ersten Formular kommt es allerdings zu größeren Skalierungsfehlern.

96 DPI
Anhang 42481

120 DPI
Anhang 42482


Bei den Komponenten auf dem zweiten Formular kommt es zur minimalen Änderungen durch Rundungsfehler schätze ich.

96 DPI
Anhang 42479

120 DPI
Anhang 42480


Gruß
Robin :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.

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