Hallo,
habe versucht mit den neuen Scriptfunktionen ein Bodyfeld zu löschen. Leider musste ich feststellen,
das es wohl einen Scriptinternen Fehler gibt, auf den man stößt, wenn die letzten beiden Zeichen des Richtextfeldes crlf sind.
Den Workaround den ich gefunden habe, habe ich versucht in meine Prozedur einzufügen. Zugegebener Maßen, habe ich jedoch nicht ganz verstanden, wie er funktionieren soll, da die Eigenschaft .text vom Richtextfeld nur read-only ist, kann ich die beiden letzten Zeichen nicht einfach abschneiden (wie im gefundenen Workaround vorgeschlagen).
Sub DeleteBodyText(doc As NotesDocument)
' Die Prozedur löscht den Inhalt eines Bodyfeldes.
Dim rtnav As NotesRichTextNavigator
Dim rtrange As NotesRichTextRange
Dim body As NotesRichTextItem
Dim crlf As String
CrLf = Chr$(13) & Chr$(10)
Set body = doc.GetFirstItem("Body")
' nötig wg. unten angegebnem Notes-Bug
'If Right(body.text,2) = CrLf Then
' body .text = Left(body.text,2)
'End If
Call body.Update()
Set rtnav = body.CreateNavigator
If rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH) Then
Set rtrange = body.CreateRange
Do
Call rtrange.SetBegin(rtnav)
' Gibt folgede Fehlermeldung im Log aus
'Restricted operation cannot cross logical boundaries, wenn letzte beiden Zeichen crlf sind
' needed because of error issue mentioned here -->
http://atnotes.de/index.php?topic=33526.msg210617#msg210617 Call rtrange.Remove
Call doc.Save(True, True, True)
Loop While rtnav.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)
End If
End Sub
Ich habe versucht, den Inhalt des Body-Feld zu löschen, indem ich es das Feld selbst lösche und wieder neu anlege. Dabei bekomme ich jedoch, wenn ich ein Feld mit Anhang bearbeite ein Problem. Handelt es sich um einen Anhang "unter dem Strich" so wird dieser beim Erzeugen des neuen Richtextfeldes gedoppelt.
Vor dem Löschen des Body-Feldes schreibe ich den Inhalt in eine Datei, die ich anschließend wieder an das Dokument anhänge. (Hinter den Text oder unter dem "Strich" am liebsten; bisher hinter den Text im Body-Feld.)
Hat vielleicht jemand eine Idee, wie man das Problem elegant lösen kann.