Ich versuche in einem Rich-Text-Feld die Zeichenfolge <NL> durch einen Zeilenumbruch zu ersetzen. Dies funktioniert nicht richtig.
Irgendwie scheint die Positionierung nicht zu stimmen.
Der Codeausschnitt ist hier.
Set rtnav = rtitem.CreateNavigator
bContinue = rtnav.FindFirstString("<NL>")
While bContinue
Call rtitem.BeginInsert(rtnav, True)
Call rtitem.AddNewline(1)
Call rtitem.EndInsert
Call rtitem.Update
bContinue = rtnav.FindNextString("<NL>")
Wend
Der Inhalt vor der Ersetzung
Text1<NL>Firma<NL>Anrede Vorname Name<NL>Straße Nummer<NL><NL>PLZ Ort
Text2
<NL><NL>Gruß
sollte eigentlich danach so ausssehen
Text1
Firma
Anrede Vorname Name
Straße Nummer
PLZ Ort
Text2
Gruß
Das Ergebnis ist aber
Text1
Firma
Anrede Vorname NameStraße Nummer
PLZ Ort
Text2
Gruß
Einige Zeilenumbrüche werden nicht richtig erzeugt. So z. B. zwischen Anrede Vorname Name und Straße Nummer fehlt er. Auch die Leerzeilen werden nicht richtig erzeugt.
Wenn ich den Code wie folgt ändere:
Set rtnav = rtitem.CreateNavigator
Set rtrange = rtitem.CreateRange
bContinue = rtnav.FindFirstString("<NL>")
While bContinue
Call rtrange.SetBegin(rtnav)
Call rtrange.SetEnd(rtnav)
Call rtitem.BeginInsert(rtnav, True)
Call rtitem.AddNewline(1)
Call rtitem.EndInsert
Call rtitem.Update
bContinue = rtnav.FindNextString("<NL>")
Wend
Wird dieser Test richtig. Aber wenn ich unterschiedliche Farben im Text verwende, z. B. für die Anschrift, wird die 1. <NL>-Folge nicht erkannt und sieht so aus
Text
1<NL
>Firma
...
Dies ganze soll eigentlich in einem komplexeren Text erfolgen. Dann gerät aber noch viel mehr durcheinander.
Eigentlich wollte ich die Funktion FindAndReplace für NotesRichTextRange nutzen, um in einem Text Platzhalter zu ersetzen. Doch dies funktioniert nicht, wenn der zu ersetzende Text Zeilenumrüche enthält.
Deshalb ersetze ich vorher die Zeilenumbrüche durch <NL>, um sie danach wie o. g. durch echte Zeilenumbrüche zu ersetzen.
Irgendetwas mache ich wahrscheinlich falsch mit der Positionierung oder ähnlichem.
Kann mir jemand helfen?