ビューのイベント 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 件のコメント:
コメントを投稿