更改脚本上的数字编辑框我是 JSL 和 Application Builder 的新手,请耐心等待。
我正在尝试构建一个具有一系列配对数字编辑框的对话框。每对中的一个代表“开始”时间,另一个代表相应的“结束”时间:
我想避免用户输入晚于“结束”时间的“开始”时间或早于“开始”时间的“结束”时间的情况。
我的第一个想法是向每个框添加一个“更改时”脚本,对于“开始”框来说是这样的:
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
对于“结束”框来说是这样的:
If( Start << Get > End << Get,
Start << Set( End << Get )
);
但这不起作用(从某种意义上说,当发生不需要的情况时什么也不会发生)。
我可能正在做一些很愚蠢的事情,但我们将不胜感激。
回复:更改脚本上的数字编辑框感谢大家的帮助!
回复:更改脚本上的数字编辑框Application Builder 需要一些时间来学习,但这是值得的。我从 JMP 版本 10 起就一直在使用它,并且每个版本都变得更好。我附上了我在 JMP Discovery 2013 JSL 圆桌会议上所做的演示,可能会有所帮助。
回复:更改脚本上的数字编辑框是的,您可以在文本编辑器中打开保存的应用程序构建器文件,但应用程序构建器 gui 是编辑文件的唯一受支持的方式。 (如果您想了解打开脚本时会发生什么,仍然值得一看。)
以下是一些网络资源的链接。
https://community.jmp.com/t5/Discovery-Summit-2016/Building-Dashboards-and-Applications-Poster-and-Tutorial/ta-p/22374
[视频]
回复:更改脚本上的数字编辑框谢谢大家的好建议。 我还没有全部尝试过,但一旦我从“真正的”工作中得到休息,我就会尝试。
与此同时,我认为我的许多问题的根源是我还没有找到应用程序生成器(AB)的详细文档。 它一定存在,但我找不到它。 有人有链接吗?
例如,我不知道AB属性菜单中的“脚本”字段是做什么用的,也没有与数字编辑框(NEB)文档建立联系。 显然,我正在这里摸索。
我感到困惑的另一个例子是,NEB 的 AB 属性窗格中存在“增量”输入字段,但不接受输入。 我可以继续……
就像我说的,一些关于 AB 的好的文档,以及一些复杂模式对话框脚本的优秀示例将会很棒。另外,有没有办法实际查看 AB 为接口生成的代码?
回复:更改脚本上的数字编辑框这是例子。使用 JMP 13 创建,因此可能不适用于早期版本。
回复:更改脚本上的数字编辑框您需要设置脚本来调用每个数字编辑框。我创建了一个简单的例子:
开始时间:开始时间的数字编辑框
结束时间:结束时间的数字编辑框
我右键单击每个数字编辑框并选择脚本 > 脚本(号码未更改)。这是我添加的脚本:
// This function is called when the number edit value is committed
start_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = this << Get;
end_time_value = end_time_neb << get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The Start Time cannot be after the End Time")
);
this << set(.);
);
);
);
// This function is called when the number edit value is committed
end_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = start_time_neb << get;
end_time_value = this << Get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The End Time cannot be before the Start Time")
);
this << set(.);
);
);
);
回复:更改脚本上的数字编辑框有几点值得尝试:
1. 查看日志窗口 - 尽管似乎没有发生任何事情,但可能会报告错误,这将为您提供线索
2. 将代码简化为尽可能简单。这将帮助您弄清楚什么有效,什么无效。例如,这似乎按照您描述的方式工作:
New Window("Test",
neb1 = NumberEditBox(0),
neb2 = NumberEditBox(0)
);
neb1 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb2 << Set( neb1 << Get )
)
);
neb2 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb1 << Set( neb2 << Get )
)
);
回复:更改脚本上的数字编辑框您可以通过在 SetFunction(而不是 OnChange)中设置开始和结束 NumberEditBox 的最小/最大值来完成此操作。
New Window( "Example",
Lineup Box( N Col( 2 ),
Text Box( "Work Starts" ),
Text Box( "Work Ends" ),
start_neb = Number Edit Box(
0,
<<SET format=""></SET>