启用/禁用从代码编辑表单域

问题描述 投票:2回答:2

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

在表单设置(和其他字段的onchange)代码中,类似于以下内容:

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

我已经看到其他地方有一个基于某些代码有条件隐藏段落的解决方法,有2个段落具有相反的隐藏条件,一个带有可编辑字段,另一个带有计算字段。但是,我不太了解Notes以了解它是如何实现的(我可以看到它在其他表单上完成,但是在Notes中似乎有一些“魔术”步骤,我要么看不到,要么得不到)。

[编辑]克尔的回复似乎是我正在寻找的,但我仍然无法找到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。有谁知道这是否真实?

lotus-notes lotus-domino domino-designer-eclipse
2个回答
0
投票

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

从技术上讲,你不是启用或禁用该字段,只是隐藏它,但通常也可以。

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

假设您有两个名为TriggerField和Subject的字段。假设您还要根据TriggerField中的值禁用Subject。最简单的方法是将TriggerField设置为对话框列表类型,并选中“刷新关键字更改字段”选项。这意味着当对话框列表的值更改时,整个文档将刷新。

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

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

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


0
投票

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

所以我有两个名为Trigger的字段,一个值为“On”的复选框和另一个作为文本字段的Subject。选中“触发器”时,我希望启用“主题”值。

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

Trigger = "On"

我还希望每当Trigger的值发生变化时重新计算,所以我在Trigger字段中选择“关键字更改时刷新字段”选项。

如果您遇到旧版本,则需要适当隐藏段落。

© www.soinside.com 2019 - 2024. All rights reserved.