0

作成したリストボックスを表示するボタンがあります。このリストボックスにはいくつかの添付ファイルがあり、いくつかの項目 (添付ファイル) が取り込まれています。また、リストボックスから選択するアイテムを削除する別のボタンを作成しました。これを行うための簡単な方法/式はありますか? 前もって感謝します。

4

2 に答える 2

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 は、その点で他の言語と違いはありません。

注: コードは複雑に見え、必要以上に長くなります。何が行われているかを (うまくいけば) 理解できるように、たくさんのコメントを追加したためです...

于 2012-08-31T14:27:50.380 に答える
0

1) リストボックスのオプションに非表示の複数値フィールドを使用します。その値は、デフォルト値 (@Attachment または別のフィールド値) に基づいて計算され、別の非表示フィールド "removed" (@Replace) に記載されているすべての値を削除します。

2)「削除済み」フィールドは、次のような削除ボタンによって入力されます

FIELD removed := @Trim(@Unique(removed:listbox));@All

「listbox」には、リストボックスで現在選択されている値が含まれます。

3) 削除された値と元に戻す/リセットする機能についてフィードバックを提供することをお勧めします。

于 2012-08-30T09:38:52.900 に答える