2

我不是一个 Notes 程序员,但是,因为我的罪过,我最近一直在为一个内部项目开发一些 Notes 功能。我需要根据情况启用/禁用字段编辑。在我看来,这是一个相当标准的功能,我需要,但我无法在任何地方找到有关如何执行此操作的任何信息。

在表单设置(和其他字段的onchange)代码中,如下所示:

if some requirement = true then
    textField.enable = true
else
    textField.enable = false
end if

我已经看到其他地方有一种基于某些代码有条件地隐藏段落的解决方法,有 2 个具有相反隐藏条件的段落,一个具有可编辑字段,另一个具有计算字段。但是,我对 Notes 的了解还不够,无法了解它是如何实现的(我可以看到它在其他形式上完成,但在 Notes 中似乎有一些我看不到或没有得到的“神奇”步骤)。

[编辑] Kerr 的回复似乎是我正在寻找的,但我仍然无法找到 InputEnabled 属性的位置。应该在最初的问题中说,我使用的是 Notes 7.0.3。

公平地说,何时启用/禁用该字段并不重要,它只是设置的一些布尔条件,在我的情况下仅在表单加载时,所以我什至不必担心这种动态变化显示表格时。

我在使用 Notes 时遇到了一些问题,我最大的问题是它与设计器 UI 的联系如此紧密,这完全是垃圾。我可以在大多数 GUI 语言(C#、Java、Delphi 甚至 VB)中以编程方式执行此类操作,但我需要在 Notes 中打开属性框并正确设置它们。

这作为一种可选方法是可以的,但是强迫你这样做意味着你只能像 IDE 在这种情况下允许你一样工作,而且这里的 IDE 似乎在积极地对你不利。你不能打开多个函数/脚本,你不能从一个脚本切换到另一个脚本而不返回左侧的菜单,你不能轻易地在代码库中搜索变量/字段的出现(相信我,这个对我来说是一个重大失败,因为在我的案例中,Notes 或内部代码库似乎大量使用了全局变量!),您只能通过显示的属性框处理字段,您不能在其中编辑代码通过主 Notes 客户端进行调试时的设计器。

虽然 Java 方面的编码比 LotusScript 好,但它仍然相当糟糕(为什么不能调试 INTO Java 代码??为什么需要为每个 Java 类重新导入 JAR 文件,每个类都有不同的 CLASSPATH ???)。可能这在 Notes 8 中得到了改进,我听说它是​​基于 Eclipse 的。有谁知道这是真的还是假的?

4

2 回答 2

0

了解有关“情况”的更多细节会有所帮助,但最常见的处理方法是在要启用/禁用的字段上使用隐藏公式。

从技术上讲,您并没有启用或禁用该字段,只是将其隐藏,但通常效果也一样。

由于在 Notes 中可以使用的事件很少,开发人员通常使用文档刷新作为“事件”来使字段隐藏或显示。

假设您有两个字段,称为 TriggerField 和 Subject。假设您想根据 TriggerField 中的值禁用主题。最简单的方法是将 TriggerField 设置为 Dialog List 类型并选中“Refresh fields on keyword change”选项。这意味着当对话框列表的值发生变化时,整个文档将被刷新。

然后在主题字段的隐藏时间公式中,指定何时显示或隐藏该字段的条件。任何时候字段值更改,然后刷新文档(即表单),在重新评估公式时隐藏。

根据您的情况,还有其他方法可以解决此问题。如果您想让用户自己刷新表单,请在表单上放置一个调用@Command([ViewRefreshFields]) 命令的按钮。如果您想同时对表单进行其他更改,您可以在刷新命令之前向该按钮添加任何其他公式。

另一种选择是只显示某个字段。然后创建一个运行 LotusScript 的按钮以允许用户更改该仅显示字段。在脚本中,您可以提示用户输入值,设置仅显示字段,然后调用文档刷新。

于 2008-12-18T18:32:35.010 回答
0

在 ND7 及更高版本中,如果您只想禁用输入字段,请在要禁用的字段的 InputEnabled 部分中编写适当的公式。

所以我有两个字段,一个称为触发器,一个值为“On”的复选框,另一个是文本字段的主题。检查触发时,我希望将启用值。

我只是将以下公式放在字段主题的 Input Enabled 元素中:

Trigger = "On"

我还希望在触发器的值发生更改时重新计算此值,因此我在触发器字段上选择了“关键字更改时刷新字段”选项。

如果您卡在旧版本中,则需要适当地隐藏段落。

于 2008-12-18T18:54:50.083 回答