Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   FastReport 5 - Line.width ändern? (https://www.delphipraxis.net/195650-fastreport-5-line-width-aendern.html)

SearchBot 15. Mär 2018 12:27

FastReport 5 - Line.width ändern?
 
Ich habe ein Blatt mit FastReport 5 (aus dem GetIt, VCL) designt, auf dem ich eine Linie habe (TfrxLineView).

Im Designer habe ich der Linie die Width 10,00 gegeben. Sie wird 10cm lang dargestellt.

Jetzt während der Runtime möchte ich diese Linie aber auf 5cm kürzen.
Schreibe ich also im Quelltext für die Druckvorbereitung
Delphi-Quellcode:
TfrxLineView(frxReport1.FindObject('Line1')).width := 5.00;
Auf dem Blatt wird aber nur eine 1mm kurze Linie gedruckt. Schreibe 50.00, ist die Linie 13mm lang !? Wahrscheinlich übernimmt FR5 den Wert als Pixel und nicht wie im Designer als cm.

Kann ich irgendwo einstellen, welche Dimension meine Werte haben - bzw. die Werte auf cm korrekt umrechnen lassen?

In der Doku finde ich nichts.

timog 15. Mär 2018 14:20

AW: FastReport 5 - Line.width ändern?
 
Öffne die FR3 Datei mal in einem Text-Editor, dort stehen die internen Abmessungen der Elemente drin (außer den Seitenabmessungen, die sind in mm).

Intern wird in FR nicht mit Zentimetern oder Millimetern gearbeitet, sondern mit "Punkten" bei 96 DPI (glaube ich zumindest, steht bestimmt irgendwo in der Doku, ich finde es nur gerade nicht).

Ich verwende den Umrechnungsfaktor 10 mm = 37,7953 (96 dpi / 2,54) in meinen Berichten.

himitsu 15. Mär 2018 14:27

AW: FastReport 5 - Line.width ändern?
 
Es gibt Konstanten zum Umrechnen.
Delphi-Quellcode:
//unit frxClass;

const
  fr01cm: Extended = 3.77953;
  fr1cm: Extended = 37.7953;
  fr01in: Extended = 9.6;
  fr1in: Integer = 96;
Zitat:

außer den Seitenabmessungen, die sind in mm
Es kommt drauf an, ob du Width oder PaperWidth betrachtest, aber da sieht man welchen Wert alles intern verwendet, relativ zur Seite.
Delphi-Quellcode:
procedure TfrxReportPage.UpdateDimensions;
begin
  Width := Round(FPaperWidth * fr01cm);
  Height := Round(FPaperHeight * fr01cm);
end;
x = mm * fr01cm
x = cm * fr1cm

SearchBot 15. Mär 2018 16:44

AW: FastReport 5 - Line.width ändern?
 
:thumb: Danke himitsu, "fr1cm" hat mir die gesuchte Lösung gebracht

:dp:


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