我正在使用以下代码在另一个表单的操作中创建文档:
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
表单的QueryOpen
和PostOpen
事件处理程序中有代码,但它们根本没有运行。当我使用@Command([Compose])
时,它被称为。
调试lotusscript时,它不会逐步执行这些事件处理程序。
我如何获得lotusscript中的等价物?
即如何触发QueryOpen
和PostOpen
事件?
答案 0 :(得分: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
您可以选择使用print语句或更复杂的内容来记录错误。必不可少。 LSI_Info function(更多信息here)已经存在了一段时间,对我来说从未成为问题。
其次,当您从LotusScript启动新表单时,LotusScript调试器不会使用新表单运行。这是因为LotusScript调试器一次只在一个“UI进程线程”上运行,启动一个新的UI表单(不是对话框),运行一个新实例。我在这里使用术语“进程线程”非常松散,因为我试图区分UI表单彼此独立且不进行交互,因此调试器不会遵循新表单。
与具有模态对话框的行为不同。调试器也不会进入对话框,(请记住,您将收到该警告消息),当您关闭表单时,调试器将返回到原始表单,因为它直接链接到原始UI线程。