1

我正在使用以下代码在另一个表单的操作中创建文档:

Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    Dim NewItemDoc As NotesUIDocument
    Dim ParentUNID As String

    ParentUNID = ws.CurrentDocument.Document.UNID(0)

    Set NewItemDoc = ws.ComposeDocument("","","Item")

    Call NewItemDoc.Document.ReplaceItemValue("ParentUNID", ParentUNID)
End Sub

我在Item表单QueryOpenPostOpen事件处理程序中有代码,但是它们根本没有运行。当我使用时,@Command([Compose])有人打电话。

在调试 lotusscript 时,它不会单步执行这些事件处理程序。

我如何在 lotusscript 中获得等价物?即我如何让QueryOpenPostOpen事件触发?

4

1 回答 1

2

你在这方面的经验只有两件事。

虔诚地并且始终使用“选项声明”,(始终)在您的潜艇、函数和 UI 事件中包含错误捕获。一个真正的节省时间。使用您的代码示例,我用于 UI 错误处理的经典代码是这样的

Sub Click(Source As Button)
    on error goto errHandle
    Dim ws As New NotesUIWorkspace
    Dim NewItemDoc As NotesUIDocument
    Dim ParentUNID As String

    ParentUNID = ws.CurrentDocument.Document.UNID(0)

    Set NewItemDoc = ws.ComposeDocument("","","Item")

    Call NewItemDoc.Document.ReplaceItemValue("ParentUNID", ParentUNID)
    Exit Sub 
  errhandle:
    MessageBox Lsi_info(2) + " : " + Str(Err) + " - " + Error(Err) + ", at line " + Str(Erl)
    Exit Sub 
End Sub

您也可以选择使用打印语句或更复杂的方法来记录错误。必不可少。LSI_Info 函数(这里有更多信息)已经存在了一段时间,对我来说从来都不是问题。

其次,当您从 LotusScript 启动新表单时,LotusScript 调试器不会与新表单一起运行。这是因为 LotusScript 调试器一次只在一个“UI 进程线程”上运行,启动一个新的 UI 表单(不是对话框),运行一个新实例。我在这里非常松散地使用术语“进程线程”,因为我试图区分 UI 表单彼此独立且不交互,因此调试器不会遵循新表单。

与对话框的行为不同,它是模态的。调试器也不会进入对话框(请记住,您将收到该警告消息),并且当您关闭表单时,调试器将返回到原始表单,因为它直接链接到原始 UI 线程。

于 2011-10-05T22:43:12.340 回答