我不是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上遇到了一些问题,我最大的问题就是它与Designer UI如此紧密地绑在一起,这是完全不合适的。我可以在大多数GUI语言(C#,Java,Delphi,甚至VB)中以编程方式执行此类操作,但我需要在Notes中打开属性框并正确设置它们。
这可以作为可选的方法,但是强制你这样做意味着你只能在这种情况下让IDE工作,并且这里的IDE似乎积极地反对你。你不能打开多个函数/脚本,你不能在不返回左边的菜单的情况下从一个脚本交换到另一个脚本,你不能轻易地在代码库中搜索变量/字段的出现(并且相信我,这个对我来说是一个主要的失败,因为在我的情况下Notes或内部代码库似乎大量使用全局变量!),你只能通过显示的属性框来处理字段,你不能编辑代码设计器在通过主要Notes客户端进行调试时。
虽然编码的Java方面比LotusScript好,但它仍然相当糟糕(为什么你不能调试INTO Java代码?为什么你需要为每个Java类重新导入JAR文件,每个类都有一个不同的CLASSPATH ???)。可能这在Notes 8中得到了改进,我听说它基于Eclipse。有谁知道这是否属实?
答案 0 :(得分:0)
有助于了解有关“情况”的更多细节,但最常见的处理方法是在要启用/禁用的字段上使用公式时隐藏。
从技术上讲,你没有启用或禁用该字段,只是隐藏它,但通常也可以。
由于在Notes中使用的事件很少,因此开发人员通常使用文档刷新作为“事件”来使字段隐藏或显示。
假设您有两个名为TriggerField和Subject的字段。假设您还要根据TriggerField中的值禁用Subject。最简单的方法是将TriggerField设置为对话框列表类型,并选中“刷新关键字更改字段”选项。这意味着当对话框列表的值更改时,整个文档将刷新。
然后在隐藏“主题”字段的公式时,指定何时显示或隐藏该字段的条件。随时改变字段值,然后刷新文档(即表单),隐藏何时重新评估公式。
根据您的具体情况,还有其他方法可以解决此问题。如果要让用户自己刷新表单,请在调用@Command([ViewRefreshFields])命令的表单上放置一个按钮。如果要同时对表单进行其他更改,可以在刷新命令之前向该按钮添加任何其他公式。
另一种选择是仅显示某个字段。然后创建一个运行LotusScript的按钮,以允许用户更改该仅显示字段。在脚本中,您可以为用户提供值,设置仅显示字段,然后调用文档刷新。
答案 1 :(得分:0)
在ND7及更高版本中,如果您只想禁用输入字段,请在要禁用的字段的InputEnabled部分中编写适当的公式。
所以我有两个名为Trigger的字段,一个值为“On”的复选框和另一个作为文本字段的Subject。选中Trigger时,我想要启用值Subject。
我只是将以下公式放在字段主题的输入已启用元素中:
Trigger = "On"
我还希望每当Trigger的值发生变化时重新计算,所以我在Trigger字段中选择“关键字更改时刷新字段”选项。
如果您遇到旧版本,则需要适当隐藏段落。