RichTextRange und RichTextNavigator

  • Hallo,


    ich habe ein Problem mit einem RichTextFeld, genauer gesagt mit
    den eue Funktion von Notes 6.


    Ich möchte alle Texte des RichTextFeldes überarbeiten, und die Formatierung muss erhalten bleiben. Habe es jetztv folgendermaßen versucht:


    Set rti = sdoc.GetFirstItem("content_7")
    Set rtn = rti.CreateNavigator
    Call rtn.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
    Set rtr = rti.CreateRange
    count = rtr.FindandReplace("href=""../""", "href=""./notesLinkAction.do?notesLink=", RT_REPL_ALL)


    also eigentlich genauso wie im Beispiel der Help. jedoch tauchen dabei Probleme auf.


    1. der Navigator wird erst gar nicht initialisiert (sichtbar im Debugger)
    2. RichtextRange hat nur die erste Zeile meines RT-Feldes (obwohl default der Begin und das Ende des Items sind)


    Hab es auch schon ohne einen Navigator versucht und mit TEXTRUN anstelle von TEXTPARAGRAPH


    Ich verstehe auch noch nicht so ganz die Zusammenhänge zwischen Navigator und Range.


    THX


    Greenhouse

  • Hallo, leider wieder mal ne Frage zu der es nicht so ganz viele Antworten gibt.


    Also mal andersherum gefragt:


    Wie kann ich den Text eines RichTextFeldes bearbeiten, ohne dabei die Formatierung zu verlieren. Gibt es da irgendeine Möglichkeit?


    Greenhouse

  • Der RTNavigator ist sinngemäß dein Text-Cursor. Mit dem Navigator kann man sich den Cursor innerhalb des RTItem an die Stelle setzen an der man irgendwas tun möchte.


    Der RTRange ist sinngemäß eine Markierung innerhalb des RT-Feldes. So als würdest du mit der Maus ein paar Wörter markieren.


    Wenn du die Formatierung beibehalten willst würde ich mit notesRichTextRange.FindAndReplace arbeiten. Dabei mußt du nur aufpassen daß du keine Formatierungszeichen überschreibst dann bleibt alles erhalten. Vielleicht beginnst du mal mit Text statt gleich Hyperlinks replacen zu wollen ;=)

  • Danke für die Erklärung von Range und Navigator bzw. die Zusammenhänge.


    Doch nun zu meinem Problem: Ich benutze RTRange mit FindAndReplace und bekomme wie gesagt nur die 1.Zeile in meinen RichTextRange obwohl ich kein Begin und End angegeben habe und diese 2 Werte damit default auf Anfang und Ende des Items gesetzt werden. Da liegt mein Problem.


    Warum sollte ich mit Text replaces beginnen, bzw. Hyperlinks sind nur Text?!
    Alles STRING!



    THX


    Greenhouse

  • So, hab das Problem denke ich gefunden.


    Habe das ganze jetzt mal mit den Java Klassen implementiert,
    und siehe da, es funktioniert.
    Also sieht mir das nach einem BUG bei den LS klassen aus.


    Greenhouse

  • Nope - ich denke nicht daß da ein Bug existiert. Java und Script setzen im Endeffekt an der gleichen Stelle auf. Ausschließen will ich es aber auch nicht, nur wäre es etwas einfach immer gleich einen Bug fürs Nichtfunktionieren verantwortlich zu machen ;=)


    Um den echten Inhalt eines RT zu sehen empfehle ich dir das Tool Notes Peek (zu finden in der Sandbox unter http://www.notes.net). Da kannst du den realen Inhalt sehen. Teilweise übersieht man ein simples Zeichen wie einen Zeilenumbruch oder einen Formatierungswechsel der genau unter einem Leerzeichen o.ä. ist und da funktioniert natürlich ein Replace nicht mehr da die tatsächliche Zeichenkette an der Stelle unterbrochen ist.