LOTUSSCRIPT /COM/OLE のクラス


例:BeginInsert メソッド
次のエージェントは、(ユーザーの指定に応じて) アイテムの最初か最後に、または第 n 段落目の前か後にテキストを挿入します。

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 beginningText As Variant, endText As Variant
Dim beforeText As Variant, afterText As Variant

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

REM Get user command and parse
If body.Text <> "" Then
inp$ = Inputbox$("Beginning, End, Before n, or After n", _
"Where do you want the new text?")
If inp$ = "" Then Exit Sub
inp$ = Lcase(inp$)
If Left(inp$, 9) = "beginning" Then
beginningText = True
Elseif Left(inp$, 3) = "end" Then
endText = True
Elseif Left(inp$, 7) = "before " Then
nthStr$ = Right(inp$, Len(inp$) - 7)
beforeText = True
Elseif Left(inp$, 6) = "after " Then
nthStr$ = Right(inp$, Len(inp$) - 6)
afterText = True
Else
Messagebox inp$,, "Bad option"
Exit Sub
End If
If beforeText Or afterText Then
If Isnumeric(nthStr$) Then
nth% = Cint(nthStr$)
Else
Messagebox nthStr$,, "Not numeric"
Exit Sub
End If
End If
End If

REM Position navigator
REM (not necessary for "end" or empty item)
If beginningText Then
Call rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
Elseif beforeText Or afterText Then
If Not rtnav.FindNthElement(RTELEM_TYPE_TEXTPARAGRAPH, _
nth%) Then
Messagebox nth%,, "No paragraph at this position"
Exit Sub
End If
End If

REM Begin insert (not necessary for "end" or empty item)
If afterText Then
Call body.BeginInsert(rtnav, True)
Elseif beginningText Or beforeText Then
Call body.BeginInsert(rtnav)
End If

REM Get text from user and append
it$ = Inputbox$("Enter the new text", "New text")
If it$ = "" Then Exit Sub
If endText Or afterText Then
Call body.AddNewLine(1)
End If
Call body.AppendText(it$)
If beginningText Or beforeText Then
Call body.AddNewLine(1)
End If

REM End insert (not necessary for "end" or empty item)
If beginningText Or beforeText Or afterText Then
Call body.EndInsert
End If

Call doc.Save(True, True)
End Sub

関連項目