0

这在Notes中可能吗?我目前使用的是版本 11。我有一个带有嵌入式视图的表单。此视图在 QueryPaste 函数中有代码。例如它有代码:

Sub Querypaste(Source As Notesuiview, Continue As Variant)
    Dim ndcRegel As NotesDocumentCollection
    Dim docRegel As NotesDocument

    Set ndcRegel = source.Documents
    Msgbox "1"
    Msgbox source.Documents.Count
    etc...

在嵌入视图中复制和粘贴文档时,它首先触发 Msgbox 1,然后计数我得到结果 0。虽然嵌入视图中有文档。

当我在视图本身中复制粘贴时,它可以正常工作并且确实找到了一个 ndc 集合..

为什么会这样?这可以解决吗?因为我想阻止我的用户在嵌入视图中复制粘贴文档。

4

2 回答 2

2

在 Notes 客户端中复制的文档被放置在文件名为“~clipbrd.ncf”的本地数据库中。
我不记得我在哪里找到了这些信息,但它在互联网上的某个地方。

在视图的QueryPaste事件中,您可以获得该数据库,其AllDocuments属性包含要粘贴的文档。

我只将它用于 Notes 8.5.x 和 9.0.x 客户端,以及嵌入的视图,因此请确保在依赖它之前进行测试。

示例代码:

Sub Querypaste(Source As Notesuiview, Continue As Variant)
    Dim clipDb As New NotesDatabase("","~clipbrd.ncf")
    Dim dc As NotesDocumentCollection

    Set dc=clipDb.AllDocuments
    ' dc now contains copied documents.
End Sub
于 2020-06-03T03:02:01.513 回答
1

@Teleman 的评论将成为我的反应,但 QueryPaste 仅为视图定义,而不是为表单或嵌入式视图定义。无论如何,至少在 R9 中是这样。

在任何情况下,QueryPaste 的源参数是一个NotesUIView对象,并且Documents 属性被定义为包含所选文档的集合,我怀疑在粘贴操作期间实际上没有所选文档。事实上,文档是这样说的:

在 QueryPaste 事件中,Documents 不包含正在粘贴的文档的列表。您可以在粘贴文档后使用 Postpaste 事件中的 Documents 属性访问列表,也可以创建代理来处理粘贴的文档。

于 2020-06-02T19:23:20.200 回答