Text und Daten mischen
Ein bestehender Text oder RTF-Text kann mit dem Inhalt von Datensatzpuffern bzw. von globalen Variablen verbunden werden. Dazu müssen im Text entsprechende Platzhalter eingetragen werden. Die Platzhalter werden dabei in ein Markierungszeichen geklammert, um sie vom normalen Text unterscheiden zu können. Dies kann sowohl zur Erstellung von Serienbriefen als auch zum dynamischen Erzeugen von einzelnen Texten verwendet werden.
Standardmäßig wird die Tilde "~" als Markierungszeichen verwendet. Das Zeichen kann aber im Applikationsobjekt in der Eigenschaft RtfMixMarker für RtfEdit-Objekte und in der Eigenschaft DocMixMarker für CtxDocEdit-Objekte auf ein beliebiges anderes Zeichen geändert werden.
Das Mischen des Textes mit den Daten kann zu verschiedenen Zeitpunkten erfolgen:
-
Beim Lesen eines Textes in ein RtfEdit-Objekt
Dazu muss bei den Befehlen (zum Beispiel ``WinRtfLoad
()) die Option_WinRtfLoadMixangegeben werden. -
Beim Speichern eines Textes aus einem RtfEdit-Objekt
Dazu muss bei den Befehlen (zum Beispiel ``WinRtfSave
()) die Option_WinRtfSaveMixangegeben werden. -
Beim Lesen eines Textes in ein CtxDocEdit-Objekt
Dazu muss bei den Befehlen (zum Beispiel ``WinDocLoadName
()) die Option_WinDocLoadMixangegeben werden. -
Beim Speichern eines Textes aus einem CtxDocEdit-Objekt
Dazu muss bei den Befehlen (zum Beispiel ``WinDocSaveName
()) die Option_WinDocSaveMixangegeben werden. -
Beim Drucken eines Textes mit dem PrtRtf-Objekt
Ist beim Drucken des Objektes in der Eigenschaft
PrtRtfFlagsdie Ausprägung_PrtRtfMixgesetzt, werden die Markierungen durch die entsprechenden Inhalte ersetzt.
Folgende Markierungen werden beim Mischen von Text und Daten ersetzt:
-
F:<Feldname>Als
<Feldname>wird der Name eines Feldes aus der Datenstruktur oder die Nummer der Datei, des Teildatensatzes und des Feldes durch Kommata getrennt verwendet. Der Platzhalter wird durch den Inhalt des angegebenen Feldes ersetzt. Das Ausgabeformat wird durch die Ländereinstellungen des Betriebssystems bestimmt. Soll ein anderes Ausgabeformat verwendet werden, kann mit den Befehlen LocaleLoad()und LocaleSelect()dieses Format ausgewählt werden. Darüber hinaus können je nach Typ des Feldes noch folgende Formatoptionen angegeben werden:- Feldtyp: Option
- Alphanumerisch (
alpha):'/W1' '/W2': Zweite Wortumstellung: In dieser Wortumstellung wird der Vorname ausgelassen. Das Beispiel wird in'Dr. Müller-Lüdenscheidt'umgewandelt.'/W3': Dritte Wortumstellung: Hier werden keine Doppelnamen angezeigt. Das Beispiel wird in'Dr. Müller'umgewandelt.'/B n ': Ist das Feld nicht leer, werden nach der Ausgabe des Inhaltes noch die in n angegebenen Leerzeichen ausgegeben. Es können bis zu999Leerzeichen angegeben werden.'/S n ': Das Feld wird mit einer statischen Ausgabelänge ausgegeben. Unabhängig von Inhalt des Feldes werden die in n angegebenen Zeichen ausgegeben. n kann einen Wert von1bis999angegeben werden. Der Ausgabewert wird abgeschnitten oder mit Leerzeichen aufgefüllt.'/P[Bildbreite][Einheit]': Interpretiert den Inhalt des Feldes als Name eines Bildes, dass in den RTF-Text codiert wird. Dadurch können z.B. Bilder, direkt als Bestandteil des RTF-Textes gedruckt werden. Es kann sich um ein internes, externes oder als BLOb gespeichertes Bild handeln. Dies ergibt sich aus dem Präfix des Feldinhaltes (* = extern, > = BLOb, ohne Angabe des Präfix = intern). Die optionale [Bildbreite] gibt an, wie breit das Bild dargestellt werden soll. Fehlt die Breite oder ist diese 0, wird das Bild in seiner Originalgröße angezeigt. Die Höhe des Bildes wird entsprechend der Breite angepasst, so dass das Bild immer mit dem Original-Seitenverhältnis dargestellt wird. Eine Vergrößerung des Bildes über 100 Prozent hinaus kann durch die Breite nicht erreicht werden. Über das optionale Argument [Einheit] kann angegeben werden, ob die Breite in Millimetern (mm), Zentimetern (cm), Twips (tw), Punkten (pt) oder Inches (in) definiert wird. Fehlt die Angabe wird Millimeter (mm) verwendet.- Ganzzahlig (
byte,word,intundbigint):'/G' '/Z': Ist der darzustellende Wert gleich0, wird keine Ausgabe erzeugt (Nullunterdrückung).- Gleitkomma (
floatunddecimal):'/G' '/Z': Ist der darzustellende Wert gleich0, wird keine Ausgabe erzeugt (Nullunterdrückung).'/P': Anstelle des Dezimaltrennzeichens wird ein Punkt ausgegeben.'/ n ': Über diese Option wird die Anzahl der Nachkommastellen definiert. Soll die Anzahl der Nachkommastellen definiert werden, muss entweder zuvor mindestens einer der bereits genannten Formatoptionen oder ein "/" ohne Optionen angegeben werden. Werden keine Nachkommastellen angegeben, werden alle Nachkommastellen angezeigt.- Datum (
date):'/L' - Zeit (
time):'/S' '/H': Die Uhrzeit wird mit Sekunden und hundertstel Sekunden angezeigt.- Logisch (
logic):'/<true>/<false>'
-
G:<Variablenbereich>:<Variablenname>Für Variablen gelten die gleichen Formatierungsmöglichkeiten, wie für Felder.
Es können mehrere Optionen hinter einem "/" gesammelt werden. Bei Zahlenwerten können die Formatierungsanweisungen (bis auf die Anzahl der Nachkommastellen) kombiniert werden: '~F:KND.fNumber/GZ/2~'. Die Anzahl der Nachkommastellen werden in einer zweiten Option angegeben.
Damit die Platzhalter korrekt ersetzt werden können, müssen die Namen korrekt geschrieben sein und es darf kein Formatwechsel zwischen den Markierungszeichen vorgenommen werden.
Markierungen, die nicht ersetzt werden können, bleiben im Text enthalten.
Beispiele:
- Platzhalter: ersetzter Text
'~F:KND.aName~':'Müller, Walter, Dr.''~F:KND.aName/W1~':'Dr. Walter Müller''~F:10,1,2/W2~':'Dr. Müller''~F:KND.fNumber~':'1.256''~F:KND.fNumber/G/2~':'1256,00''~F:KND.fNumber//2~':'1.256,00''~F:KND.lActive/ja/nein~':'nein''G:gRtfData:gPictureName/P15cm': Der Inhalt der globalen VariablegPictureNamedes globalen DatenbereichesgRtfDatawird als Name zu einem Bild interpretiert, dass in den RTF-Text gemischt wird. Das Bild wird mit einer Breite von15Zentimetern dargestellt, sofern das Bild hierzu nicht über100Prozent gezoomt werden muss.