更改脚本上的数字编辑框我是 JSL 和 Application Builder 的新手,所以请耐心等待。
我正在尝试构建一个具有一系列配对数字编辑框的对话框。每对中的一个代表“开始”时间,另一个代表相应的“结束”时间:
我想避免用户输入“开始”时间晚于“结束”时间或“结束”时间早于“开始”时间的情况。
我的第一个想法是为每个框添加一个“on change”脚本,类似于“start”框:
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
对于“结束”框,就像这样:
If( Start << Get > End << Get,
Start << Set( End << Get )
);
但这不起作用(从某种意义上说,当不需要的情况发生时什么都不会发生)。
我可能正在做一些非常愚蠢的事情,但我们将不胜感激。
回复:更改脚本上的数字编辑框谢谢大家的帮助!!!
回复:更改脚本上的数字编辑框应用程序生成器需要一些时间来学习,但这是值得的。我从 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
回复:更改脚本上的数字编辑框谢谢大家的好建议。 我还没有全部尝试过,但是一旦我从“真正的”工作中休息一下,我就会尝试。
同时,我认为很多问题的根源在于我没有找到 App Builder (AB) 的详细文档。 它必须存在,但我找不到它。 有人有链接吗?
例如,我不知道 AB 的 Properties 菜单中的“Script”字段是做什么用的,也没有与 Number Edit Box (NEB) 文档建立联系。 很明显,我在这里摸索着。
我感到困惑的另一个例子是,NEB 的 AB 属性窗格中的“增量”输入字段存在,但不接受输入。 我可以继续……
就像我说的,一些关于 AB 的好文档,以及一些复杂的模态对话框脚本的优秀示例会很棒。另外,有没有办法实际查看 AB 为接口生成的代码?
回复:更改脚本上的数字编辑框这是示例。使用 JMP 13 创建,因此在早期版本中可能无法使用。
回复:更改脚本上的数字编辑框您需要设置脚本来调用每个数字编辑框。我创建了一个简单的示例:
start_time_neb :开始时间的数字编辑框
end_time_neb : 结束时间的数字编辑框
我右键单击每个数字编辑框并选择脚本 > 脚本(未更改编号)。这是我添加的脚本:
// 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)中设置开始和结束 NumberEditBoxes 的最小值/最大值来执行此操作。
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>