在QueryPaste过程中检索NotesDocumentCollection。

问题描述 投票:0回答:1

在Notes中可以这样做吗?我目前使用的是11版本,我有一个表单,里面有一个嵌入式视图。这个视图在QueryPaste函数中有代码,例如,它有这样的代码:"当在嵌入式视图中复制和粘贴文档时,它首先触发Msgbox 1,然后为我的计数。

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集合。

为什么会这样?能否解决这个问题?因为我想阻止我的用户在嵌入式视图中复制粘贴文档。

lotus-notes lotus-domino lotusscript hcl
1个回答
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

1
投票

@Teleman的评论本来是我的反应 但QueryPaste只是为视图定义的 而不是为表单或嵌入式视图定义的。至少在R9中是这样的。

在任何情况下,QueryPaste的源参数都是一个叫做 备注UIView 对象,以及 文件财产 被定义为包含 选定 文件,我怀疑在粘贴操作中,实际上没有选择文件。事实上,文档中是这样说的。

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

© www.soinside.com 2019 - 2024. All rights reserved.