Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Jürgen Schomann am 03.09.13 - 21:51:37

Titel: Probleme mit NotesRichTextNavigator.FindFirstString/FindNextString
Beitrag von: Jürgen Schomann am 03.09.13 - 21:51:37
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?
Titel: Re: Probleme mit NotesRichTextNavigator.FindFirstString/FindNextString
Beitrag von: pram am 03.09.13 - 22:02:08
versuche mal nach dem rtItem.update den Navigator neu zu erzeugen:
Set rtnav = rtitem.CreateNavigator
Set rtrange = rtitem.CreateRange

Dann musst du wieder mit rtnav.FindFirstString("<NL>") nach dem ersten <NL> suchen, da du es ja ersetzt hast (sehe aber aktuell noch keinen Code der das raus löscht)

Gruß
Roland
Titel: Re: Probleme mit NotesRichTextNavigator.FindFirstString/FindNextString
Beitrag von: Jürgen Schomann am 03.09.13 - 22:23:22
Vielen Dank für deine Antwort. Ich werde morgen weiterprobieren.
Mit folgendem Code lösche ich anschließend alle <NL>-Folgen raus

   Set rtrange = rtitem.CreateRange
   Call rtrange.FindAndReplace(TEXT_NEWLINE, "", RT_REPL_ALL)
   Call rtitem.Update


Hatte ich vorhin vergessen anzugeben.
Titel: Re: Probleme mit NotesRichTextNavigator.FindFirstString/FindNextString
Beitrag von: Jürgen Schomann am 04.09.13 - 14:21:30
Roland, dein Tipp war ok. Habe es wie folgt geändert, dann wird alles richtig:

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
   Set rtrange = rtitem.CreateRange
   Call rtrange.FindAndReplace("<NL>", "")
   Call rtitem.Update
   Set rtnav = rtitem.CreateNavigator
   bContinue = rtnav.FindFirstString("<NL>")
Wend

Nochmals vielen Dank.
Titel: Re: Probleme mit NotesRichTextNavigator.FindFirstString/FindNextString
Beitrag von: bikerboy am 12.11.14 - 16:08:06
Wuuuhuuu die Suche hat funktioniert!

Bekomme nun keinen duseligen Fehler mehr, das mein Navigator nicht zulässig ist, aber er fügt die Neue Zeile nicht ein
Titel: Re: Probleme mit NotesRichTextNavigator.FindFirstString/FindNextString
Beitrag von: bikerboy am 12.11.14 - 16:20:28
Ah Fehler lag bei mir.... wie so oft

hatte noch die NotesRichTextRange benutzt anstatt direkt über der NRT zu gehen. Nun geht es.

Habe ich heute schon die Liebe zu dem Forum ausgedrückt?

 :love: