FastReport Positionstext ohne RFT-Formatierung ausgeben

Aus GEVITAS
Wechseln zu: Navigation, Suche

1 Allgemeines

Beim Drucken eines Angebots/Auftrags kann man den Positionstext, der normalerweise RTF-Formatierung beinhaltet, als reinen Text ausgeben.

Diese Funktion steht ab Version 3.1.18209 zur Verfügung.


2 Hintergrund

In einem Report für ein Angebot/einen Auftrag oder eine Rechnung kann man das Positionen-Textfeld als RTF-Feld einfügen. Dieses Feld kann formatierten Text beinhalten.

So weit, so gut.

Das Problem ist, dass so formatierte Felder beim Export in PDF-Dateien nicht als Text exportiert werden (bis FastReport© 5), sondern als Grafik. (Ab FastReport© 6 soll das nicht mehr so sein).

Das hat zwei Nachteile:

  • Die PDF-Datei wird größer, bei viel Text auch viel größer!
  • Der Bereich, in dem der Text angezeigt wird (also die Grafik), wird - ja nach Export-Optionen - u.U. etwas unsauber ausgegeben.

Um diese Nachteile zu umgehen, kann man in den Report anstelle des RTF-Feldes eine Variable mit dem Namen "AuftrPosTextOhneRtf" (Angebot/Auftrag) bzw. "RechPosTextOhneRtf" (Rechnung) festlegen und einfügen.

Das Druckprogramm "GevitasFormPrint" stellt in dieser Variablen den reinen Text des RTF-Feldes dar, ohne Steuerzeichen!


3 Vorgehensweise

  • Legen Sie eine neue Variable im Report an, wie hier beschrieben.
Nennen Sie die Variable
AuftrPosTextOhneRtf

bzw.

RechPosTextPositionOhneRtf

oder

RechPosTextOhneRtf
(genau so, mit Groß- und Kleinbuchstaben!)
  • Fügen Sie ein Child-Band des Detail-Bands ein.
Klicken Sie dazu auf das Detail-Band und wählen aus dem Menü "Child-Band einfügen".
Geben Sie dem Band einen aussagekräftigen Namen, z.B. "ChildPosText".
  • Ziehen Sie aus dem Register "Variablen" die Variable "AuftrPosTextOhneRtf" bzw. "RechPosTextOhneRtf" in dieses Band.
Ein Feld (Memo) wird eingefügt. Ziehen sie es auf die gewünschte Größe.
Geben Sie dem Band und dem Feld die Eigenschaft "Dehnen".
  • Klicken Sie im Objekt-Inspektor links auf Ereignisse und doppelklicken Sie auf "OnBeforeClick".
Schreiben Sie diesen Code:


procedure ChildPosTextOnBeforePrint(Sender: TfrxComponent);
begin
  ChildPosText.Visible := <AuftrPosTextOhneRtf> > '';
end;

bzw. bei der Rechnung


procedure ChildPosTextOnBeforePrint(Sender: TfrxComponent);
begin
  ChildPosText.Visible := <RechPosTextOhneRtf> > '';
end;


Dieser Code unterdrückt das Band, wenn die Variable leer ist.