Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Quickreport: Alle Größenangaben sind mit 25,4 multipliziert (https://www.delphipraxis.net/210616-quickreport-alle-groessenangaben-sind-mit-25-4-multipliziert.html)

BlueStarHH 18. Mai 2022 08:24

Quickreport: Alle Größenangaben sind mit 25,4 multipliziert
 
Hallo,

ich nutze Quickreport. Wenn bei einem Kunden ein Report erstellt wird, sind dort alle Größen/Positionen mit 25,4 multipliziert. D.h. in meiner Ini steht z.B. für ein Text-Objekt Left = 1 mm und Top = 10 mm, dann wird das Textobjekt aber bei Left = 25,4 mm und Top = 254 mm plaziert. Warum? Windows 10, Skalierung 100 %. Auf vielen anderen PCs läuft der selbe Code ohne Probleme.

DeddyH 18. Mai 2022 08:32

AW: Quickreport: Alle Größenangaben sind mit 25,4 multipliziert
 
Da stimmt die Einheit nicht. 2,54 ist der Umrechnungsfaktor von cm zu Zoll.

Jumpy 18. Mai 2022 08:34

AW: Quickreport: Alle Größenangaben sind mit 25,4 multipliziert
 
Das sieht dann so aus, als ob auf dem Rechner deine 1 als 1 Inch = 25,4 mm interpretiert wird.
Könnte also eine Lokalisierungs-Sache sein.

BlueStarHH 18. Mai 2022 08:44

AW: Quickreport: Alle Größenangaben sind mit 25,4 multipliziert
 
Zitat:

Zitat von DeddyH (Beitrag 1505969)
Da stimmt die Einheit nicht. 2,54 ist der Umrechnungsfaktor von cm zu Zoll.

Alle Quickreport-Komponmenten haben die Eigenschaften Size.Left und Size.Top. Diesen weise ich einfach einen Wert zu. Z.B. eine 1 für einen Milimeter. Ich selber rechne gar nichts um. Der Fehler liegt also im Quickreport? Komisch, dass das Problem dann all die Jahre unentdeckt blieb.

BlueStarHH 18. Mai 2022 09:45

AW: Quickreport: Alle Größenangaben sind mit 25,4 multipliziert
 
Danke an alle. Ich habe das Problem in der QuickRpt.pas gefunden:

Delphi-Quellcode:
initialization
...
  LocalMeasureInches := GetLocaleChar(DefaultLCID, LOCALE_IMEASURE, ' ') = '1';
...
Hier wird versucht die Maßeinheit Millimeter oder Inch vom System auszulesen. Auf dem Kunden-PC wird Inch erkannt, obwohl in der Systemsteuerung Millimeter eingestellt sind. Da keiner mit Inch arbeiten soll, habe ich einfach LocalMeasureInches := false gesetzt und alles klappt. (Ein ähnliches Problem gab/gib? es ja mit den Tausender- und Dezialtrennern in Formatsettings.)

BerndS 18. Mai 2022 09:52

AW: Quickreport: Alle Größenangaben sind mit 25,4 multipliziert
 
Ich bzw. unsere Kunden hatten das Problem noch nie.
Trozdem hab ich die Zeile in der Unit gleich geändert.
Danke für den Tip.:thumb:

Frickler 18. Mai 2022 10:35

AW: Quickreport: Alle Größenangaben sind mit 25,4 multipliziert
 
Zitat:

Zitat von BlueStarHH (Beitrag 1505983)
Auf dem Kunden-PC wird Inch erkannt, obwohl in der Systemsteuerung Millimeter eingestellt sind.

Das passierte früher bei der Vorinstallation von OEM PCs bei verschiedenen Herstellern; gesehen habe ich es bei Dell und HP.

Abhilfe: in der Systemsteuerung einmal die Ländereinstellung umstellen auf Englisch (US), speichern, und dann zurückstellen nach Deutsch (Deutschland).

Das hatten wir eine Weile so oft bei Kunden, dass ich ein kleines Testprogramm geschrieben hatte...

himitsu 18. Mai 2022 11:28

AW: Quickreport: Alle Größenangaben sind mit 25,4 multipliziert
 
Es kommt drauf an, was "Left" für eine Einheit hat.
Pixel, Millimeter, Inch, Dots, oder sonstwas

Kann man irgendwo QuickReport sagen, in welcher Einheit es rechnen soll?

BlueStarHH 18. Mai 2022 11:40

AW: Quickreport: Alle Größenangaben sind mit 25,4 multipliziert
 
Zitat:

Zitat von himitsu (Beitrag 1506002)
Es kommt drauf an, was "Left" für eine Einheit hat.
Pixel, Millimeter, Inch, Dots, oder sonstwas

Kann man irgendwo QuickReport sagen, in welcher Einheit es rechnen soll?

Ja, jede Komponente hat diese Einheit Eigenschaft "Units". Und diese wird u.a. über LocalMeasureInches festgelegt. Siehe oben und hier:

Delphi-Quellcode:
constructor TQRUnitBase.Create;
begin
  if LocalMeasureInches then
    Units := Inches
  else
    Units := MM;
...
end;

Rolf Frei 18. Mai 2022 16:37

AW: Quickreport: Alle Größenangaben sind mit 25,4 multipliziert
 
Die richtige Lösung ist die von Frickler erwähnte einmalige Umstellung der Spracheisntellungen. Danach passt alles. Wenn du das ncht machst wirst du auch mit anderern Einstelugn eproblem haben, weil das alles mit den US-Einstellungen kommt, also auch das Zahlenformat, Währung, Datumsformat, etc.

Bei bestimmte OEMS wie HP wird nur der UNocode teil der Einstelluggen richtig konfiguriert und die ANSI-Einstellungen bleiben auf dem Standart US. Somit sehen alle ANSI-Programme nur die englischen Einstellungen. Durch ein Um- und Zurückstellen der Sparcheinstellung wird der ANSI Teil der Einstellung richtig gespeichert.


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

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