![]() |
FastReport: RFT Länge ermitteln
Hallöle...:zwinker:
SOLL: Ich will ein Child Band entsprechend dem INHALT (Textzeichen = 0) eines RTF Feldes ausblenden. Das Datenfeld ist gefüllt. Auch bei leerer Anzahl von Zeichen sind ja Steuerzeichen drin...normal. Bei den fixen RTF Feldern habe ich mir im Delphi procedure gemacht die über die .Lines die Zeichen emittelt, und die eine "VisibleChild" Variable Tue oder False einstellt. Im Report werte ich dann die Variable aus. Nun habe ich aber RTF Felder in den Detaildaten...da kann ich mit der Variable nix anfangen. :roll: Problem: Egal welches Event z.B. procedure RichPositionOnAfterData(Sender: TfrxComponent); ich nehme, die RichPosition.RichEdit.Lines sind immer leer. :shock: Das Feld hat zu diesem Zeitpunkt den RTF Text zur Verfügung. Frage: Wie komme ich an die Lines? :gruebel: PS: Fastreport Forum ist dürftig und hat keine Antwort. Danke |
AW: FastReport: RFT Länge ermitteln
Hat das RichText-Control des FastReport auch sowas, wie ein
![]() womit man steuern kann, wie das Streaming arbeitet? Bzw. eigentlich .Lines.PlainText, was im Lines.SaveToStream/LoadFromStream steuert, ob beim EM_STREAMIN/EM_STREAMOUT ein SF_TEXT+SFUNICODE oder SF_RTF verwendet wird. Alles Andere verwendet z.B. EM_GETLINE, WM_GETTEXT und Dergleichen, welches nur auf Text und nicht auf den PlainText (RTF) zugreift. |
AW: FastReport: RFT Länge ermitteln
Danke...
Zitat:
Wie macht man aus einem Feld einen Stream? Meine Versuche die Lines über einen Stream einzulesen...:?
Delphi-Quellcode:
...wann werden die RichEdit.Lines von FR eingelesen?
var
Stream: TMemoryStream; begin Stream := TMemoryStream.Create; try (<DataPosition."PositionRtf">).SaveToStream(Stream); // falsch RichPositions.RichEdit.Lines.LoadFromStream(Stream); ... |
AW: FastReport: RFT Länge ermitteln
Zitat:
Code:
IsEmpty(<DataPosition."PositionRtf">)
|
AW: FastReport: RFT Länge ermitteln
:zwinker: IsEmpty kennt FR nicht. Selbst dann...im Datenfeld (leerer Text = 0 Zeichen) steht "{\rtf1\ansi\ansicpg1252\deff0\nouicompat{\fonttbl{ \f0\fnil\fcharset0 Arial;}} {\*\generator Riched20 10.0.19041}\viewkind4\uc1 \pard\fs18\lang1031\par }" drin.
|
AW: FastReport: RFT Länge ermitteln
Hi,
diese Links sollten dir weiterhelfen: RTF to plain text: ![]() Using Custom Functions in a Report: ![]() Alex |
AW: FastReport: RFT Länge ermitteln
Danke...:P
Das Erste kommt mir bekannt vor. So ähnlich habe ich das mit den Variablen gemacht. :wink: Custom Functions ... fürs nächste Mal. 8-) Inzwischen habe ich eine FastReport Lösung: Dummy TfrxRichView im Detail Band
Delphi-Quellcode:
:warn: Fehlinformation :oops:
procedure DetailDataOnBeforePrint(Sender: TfrxComponent);
begin Dummy.RichEdit.Lines.Clear; Dummy.RichEdit.Lines.Add(<DataPosition."TEILRtf">); // Achtung! Lines.Text funktioniert nicht! Da wird der RTF string in die Lines geschrieben. Mit Lines.Add wird der RTF Text als PlainText ausgegeben. Child.Visible := Length(Dummy.RichEdit.Lines.Text) > 2; // Offset für immer einen LineFeed ... warum auch immer. end; |
AW: FastReport: RFT Länge ermitteln
Zitat:
Delphi-Quellcode:
Bis bald...
procedure DetailDataOnBeforePrint(Sender: TfrxComponent);
begin Child.Visible := (Dummy.RichEdit.Lines.Count > 0); end; Thomas |
AW: FastReport: RFT Länge ermitteln
Liste der Anhänge anzeigen (Anzahl: 3)
Danke...8-)
Delphi-Quellcode:
Funktioniert nicht. Weil 5 Lines keinen Inhalt haben können...sondern nur LineFeeds. :zwinker: Ich will aber die Zeile ausgeblendet haben bei leerem -> Text = '' Lines.
(Dummy.RichEdit.Lines.Count > 0);
PS: Meine Variante von gestern funktioniert nicht, weil Fastreport selbst im "FastScript" Bugs hat! Oder kann mir das jemand logisch erklären? Siehe Bilder! Erklärung: ...der Block soll entscheiden ob das Child2 ausgeblendet wird. Der Code soll in der letzten Zeile, was auch die erste Zeile ist, wenn kein Text drin ist sondern nur LineFeeds, die Zeile entfernen. Dann ist Lines.Count = 0. 1. Breakpoints rot 2. die gelbe Linie ist die aktuelle Zeile 3. Bild 1 vor Ausführung, Bild nach der Ausführung :evil: Er darf die Bedingung nicht auführen weil Bedingung = False ist! Fehler im Debugger FastReport: 1. niemals im Debugger RichEdit.Lines.Text (habe ich gestern kurzzeitig gesehen...daher mein übereiltes Statement von gestern :oops:) 2. Ablaufsteuerung funktioniert nicht :shock: ...so kann ich nicht arbeiten. :? Oder was habe ich übersehen? :gruebel: PS: Mail an FastReport Support ist raus. |
AW: FastReport: RTF Länge ermitteln
Zitat:
Alternative:
Delphi-Quellcode:
Child.Visible := Length(Trim(Dummy.RichEdit.Lines.Text)) = 0;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz