"Error - Script is busy" & 崩溃,每当我尝试从 DXL 中创建的按钮引用 uidoc
"Error - Script is busy" & crash, whenever I try to reference uidoc from button created in DXL
我创建了一个表单,用户可以在其中输入值,然后单击 "Add"。然后,这会在表单的富文本字段中创建一个 table。
这是通过创建一个带有 richtextitem 的临时文档,通过 DXL 展开它,将 DXL 中的 table 插入 richtextitem,然后导入回来来完成的。然后我使用 uidoc.ImportItem 将临时文档中的 table 复制到我的 uidoc 中。
效果很好,我对自己很满意。此外,用户可以 "Add" 更多行。这是通过删除 table(使用 Call uidoc.FieldSetText("table", "")
)并从新值重新创建 table 来完成的,如上所述。
但是,文档的每一行都有两个按钮,"Edit" 和 "Delete",以便用户可以在 table 之后编辑或删除一行已创建。
到目前为止,我正专注于 "Delete" 的编码,而且它有效。但是,当代码到达任何 uidoc 操作时,例如Call uidoc.FieldSetText("table", "")
或 Call uidoc.EditGotoField("Table")
我在状态栏中收到可怕的 "Error - Script is Busy" 消息,并且当我关闭文档时 Notes 崩溃。
我推测这是由于按钮认为它在不同的文档中,所以当它把焦点移动到它认为是不同的 uidocument 中的字段时,它会导致问题。
我尝试了几种不同的方法,例如让按钮在 NotesDocument 上设置字段,然后刷新,使用隐藏值触发 updateTable Sub。我也尝试过触发代理,但是由于没有保存uidoc,我无法获得session.documentcontext,当然我也无法访问代理中的UI。
我还没有尝试过的一件事是让“删除”按钮触发一个公式命令,该命令会导致刷新 uidoc,并从 PostRecalc 事件中触发 updateTable Sub。
如果有人有任何其他建议,我将非常感激,因为这是一个阻碍我将我们的遗留表单之一的性能提高大约 1000% 的小问题。
好的,所以我尝试在未保存的 uidoc 的富文本字段中的富文本 table 中使用 DXL 创建的按钮中使用公式语言而不是 Lotusscript。它奏效了:-)
@Setfield("deleteRow"; 1);
@Command([ViewRefreshFields])
显然,创建 DXL 文档的 LotusScript 替换了每个按钮的 @Setfield 中的适当行号。此外,我现在在 QueryCalc 事件中有 LotusScript 检查 doc.deleteRow(0)
的值,如果它大于 0,则调用 updateTable 子例程。
这个过程进一步证明,向别人解释自己的问题通常可以引发导致解决方案的想法。
我创建了一个表单,用户可以在其中输入值,然后单击 "Add"。然后,这会在表单的富文本字段中创建一个 table。
这是通过创建一个带有 richtextitem 的临时文档,通过 DXL 展开它,将 DXL 中的 table 插入 richtextitem,然后导入回来来完成的。然后我使用 uidoc.ImportItem 将临时文档中的 table 复制到我的 uidoc 中。
效果很好,我对自己很满意。此外,用户可以 "Add" 更多行。这是通过删除 table(使用 Call uidoc.FieldSetText("table", "")
)并从新值重新创建 table 来完成的,如上所述。
但是,文档的每一行都有两个按钮,"Edit" 和 "Delete",以便用户可以在 table 之后编辑或删除一行已创建。
到目前为止,我正专注于 "Delete" 的编码,而且它有效。但是,当代码到达任何 uidoc 操作时,例如Call uidoc.FieldSetText("table", "")
或 Call uidoc.EditGotoField("Table")
我在状态栏中收到可怕的 "Error - Script is Busy" 消息,并且当我关闭文档时 Notes 崩溃。
我推测这是由于按钮认为它在不同的文档中,所以当它把焦点移动到它认为是不同的 uidocument 中的字段时,它会导致问题。
我尝试了几种不同的方法,例如让按钮在 NotesDocument 上设置字段,然后刷新,使用隐藏值触发 updateTable Sub。我也尝试过触发代理,但是由于没有保存uidoc,我无法获得session.documentcontext,当然我也无法访问代理中的UI。
我还没有尝试过的一件事是让“删除”按钮触发一个公式命令,该命令会导致刷新 uidoc,并从 PostRecalc 事件中触发 updateTable Sub。
如果有人有任何其他建议,我将非常感激,因为这是一个阻碍我将我们的遗留表单之一的性能提高大约 1000% 的小问题。
好的,所以我尝试在未保存的 uidoc 的富文本字段中的富文本 table 中使用 DXL 创建的按钮中使用公式语言而不是 Lotusscript。它奏效了:-)
@Setfield("deleteRow"; 1);
@Command([ViewRefreshFields])
显然,创建 DXL 文档的 LotusScript 替换了每个按钮的 @Setfield 中的适当行号。此外,我现在在 QueryCalc 事件中有 LotusScript 检查 doc.deleteRow(0)
的值,如果它大于 0,则调用 updateTable 子例程。
这个过程进一步证明,向别人解释自己的问题通常可以引发导致解决方案的想法。