Examples: Compact method (NotesRichTextItem - LotusScript)

This agent compacts the Body item of the current or first selected document after a search and replace.

Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim body As NotesRichTextItem
Dim rtnav As NotesRichTextNavigator
Dim rtrange As NotesRichTextRange

Sub Initialize
  Set session = New NotesSession
  Set db = session.CurrentDatabase
  Set dc = db.UnprocessedDocuments
  If dc.Count = 0 Then
    Messagebox "No document selected",, "No doc"
    Exit Sub
  End If
  Set doc = dc.GetFirstDocument
  Set body = doc.GetFirstItem("Body")
  Set rtnav = body.CreateNavigator
  searchString$ = Inputbox$ _
  ("Enter the search string", "Search string")
  If searchString$ = "" Then Exit Sub
  replaceString$ = Inputbox _
  ("Enter the replacement string", "Replacement string")
  If replaceString$ = "" Then Exit Sub
  Call rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
  n% = 0
  Set rtrange = body.CreateRange
  While rtrange.FindAndReplace _
  (searchString$, replaceString$, RT_FIND_CASEINSENSITIVE) > 0
    n% = n% + 1
    Messagebox "Replacement " & n%,, n%
    Call body.Update ' Must update before looping
  Wend
  If n% > 0 Then
    Call body.Compact
    Call doc.Save(True, True)
  End If End Sub