ビューのイベント Onselect を使ったサンプルの差し替え版です。
下の Lotus Script では、ビューの選択マージンに1文書ずつチェックマークを付けた場合はチェックマークを付けた順に番号を付けますが、選択マージンをマウスでなぞったり、Ctrl + A 等で一度にチェックマークを付けた場合は作成日順に番号が付きます。
チェックマークを消した場合は番号が付きません。チェックマークを消した後また同じ文書に付けると、最後にチェックマークを付けた時の番号になります。
文書のチェックマークが解除されたことを調べるのに NotesDocumentCollection クラスの Contains を使っていますが、これも 8 から利用できるメソッドです。文書コレクションをループしなくても探せるところがステキです。
ヘルプによると Contains の引数には NotesDocument, NotesDocumentCollection のオブジェクトの他、 String値の NoteID が使えるとのこと。ただし NoteID を配列として指定できないようです。
'ビューの(Globals) (Declarations)
Dim ws As NotesUIWorkspace
Dim ss As NotesSession
Dim idlist List As Long
'ビューのイベント Initialize
Sub Initialize
Set ws = New NotesUIWorkspace
Set ss = New NotesSession
End Sub
'ビューのイベント Onselect
Sub Onselect(Source As Notesuiview)
Dim doc As NotesDocument
Dim dc As NotesDocumentCollection
Set dc = Source.Documents
Set doc = dc.GetFirstDocument
While Not ( doc Is Nothing )
If Not Iselement( idlist( doc.NoteID ) ) Then
idlist( doc.NoteID ) = "1"
End If
Set doc = dc.GetNextDocument( doc )
Wend
Forall o In idlist
If Not dc.Contains( Listtag( o ) ) Then
Erase idlist( Listtag( o ) )
End If
End Forall
End Sub
'ビューのアクション「番号を付ける」
Sub Click(Source As Button)
Dim doc As NotesDocument
Dim db As NotesDatabase
Dim lngNum%
Set db = ws.CurrentDatabase.Database
lngNum = 0
Forall o In idlist
Set doc = db.GetDocumentByID( Listtag( o ) )
lngNum = lngNum + 1
doc.num = lngNum
Call doc.Save( True, False )
End Forall
Erase idlist
Call ws.ViewRefresh
Call ws.CurrentView.DeselectAll
End Sub
0 件のコメント:
コメントを投稿