作成したリストボックスを表示するボタンがあります。このリストボックスにはいくつかの添付ファイルがあり、いくつかの項目 (添付ファイル) が取り込まれています。また、リストボックスから選択するアイテムを削除する別のボタンを作成しました。これを行うための簡単な方法/式はありますか? 前もって感謝します。
2 に答える
あなたがやろうとしていることをもう少し明確に説明してみてください。「リストボックス」とは、タイプリストボックスのフィールドを意味すると思います。この種のフィールドには添付ファイルを含めることはできず、テキスト値のみを含めることができます。リストボックスに 1 つ以上の添付ファイルの名前が含まれているということですか?
「リストボックスを表示するボタン」について話します。それは問題に関連していますか?
リストボックスはどのように作成され、入力されますか? 添付ファイルの名前を含む別のフィールドからだと思いますか?
私はいくつかの仮定を使用しました(実際には問題をより詳細に説明する必要があります)、これが私がそれを解決した方法です:
フィールド 'ListData': テキスト フィールド、非表示。セミコロンで区切られた、表示する値 (添付ファイルの名前など) が含まれます。
フィールド 'ListBox': リストボックス フィールド、複数の値を許可、ドキュメントの更新時に選択肢を更新、選択肢に数式を使用: @Explode(ListData;";")
ボタン「選択を削除」:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim selected As Variant
Dim listdata As Variant
Dim files List As String
Dim newlistdata As String
Dim i As Integer
Set uidoc = ws.CurrentDocument
'*** Read the field values and split into arrays
listdata = Split( uidoc.FieldGetText("ListData"), ";" )
selected = Split( uidoc.FieldGetText("ListBox"), ";" )
'*** Convert listdata array into a Lotusscript list
Forall file In listdata
files(file) = file
End Forall
'*** Loop through the array of selected values
For i = 0 To Ubound(selected)
'*** Check if the currently processed value is in the files list
If Iselement(files(selected(i))) Then
Erase files(selected(i)) ' Remove/erase from the list
'*** Add code here to remove attachments from document
'*** if that is what you actually want to do.
'*** Use notesEmbeddedObject.Remove method for that.
End If
Next
'*** Now we have the files list with the selected items removed.
'*** Loop though the list and build a string of remaining values
Forall ff In files
newlistdata = newlistdata + ff + ";"
End Forall
'*** Write the new string of remaining attachments back to the listdata field
Call uidoc.FieldSetText("ListData", newlistdata)
Call uidoc.Refresh
End Sub
問題をよく考えて、本当にやりたいことを見つけてから、それを小さなステップに分割して、それぞれを解決するなどです。Lotusscript は、その点で他の言語と違いはありません。
注: コードは複雑に見え、必要以上に長くなります。何が行われているかを (うまくいけば) 理解できるように、たくさんのコメントを追加したためです...
1) リストボックスのオプションに非表示の複数値フィールドを使用します。その値は、デフォルト値 (@Attachment または別のフィールド値) に基づいて計算され、別の非表示フィールド "removed" (@Replace) に記載されているすべての値を削除します。
2)「削除済み」フィールドは、次のような削除ボタンによって入力されます
FIELD removed := @Trim(@Unique(removed:listbox));@All
「listbox」には、リストボックスで現在選択されている値が含まれます。
3) 削除された値と元に戻す/リセットする機能についてフィードバックを提供することをお勧めします。