从列表框中获取选定项 - JSL 的行为发生了改变?目前正在观看@David_Burnham 制作的关于如何编写 JSL 脚本的精彩教学视频。
直到 7 分 28 秒,一切运行正常。大约从 8 分 13 秒开始,也就是窗口转换为模态窗口的那一刻,这段代码抛出了一个错误:
// doesn't work:
lst = {"A", "B", "C"};
New Window("Select", << Modal,
Border Box(top(10), bottom(10), left(15), right(10),
V List Box(
TextBox("Select the predictor variable", <
<SETFONTSTYLE></SETFONTSTYLE>
<BR /> <P>我找到了一个解决方案: <A href="https://community.jmp.com/t5/Discussions/How-to-get-specific-input-values-from-modal-windows-to-be-placed/m-p/483379#U483379" class="lia-mention-container-editor-message lia-img-icon-forum-thread lia-fa-icon lia-fa-forum lia-fa-thread lia-fa" target="_blank">如何从模态窗口获取特定的输入值并将其放入 JMP 脚本中保存。</A>至少,当我运行以下脚本并按下模态窗口的“确定”按钮时, <FONT face="courier new,courier" color="#0000FF">sel 函数</FONT>会返回一个包含所选值的列表。</P> <P><U><STRONG>脚本</STRONG></U>:</P> <BR />
<CODE class=" language-jsl">// works
NewWindow("Select", <
<MODAL>
<CODE class=" language-jsl"> <BR /> <P><U><STRONG>示例输出</STRONG></U>:</P> <CODE class=" language-jsl">sel = {"A", "B"};
{Button( 1 )} // what is this? 我想了解三件事:
- 我贴在最上面的原始代码有问题吗(// 不起作用)?还是 JSL 自视频录制以来行为发生了变化?
- 返回值{按钮( 1 )} ,我不明白它是什么。它为什么会出现在这里?我猜测它来自ButtonBox() 函数,但脚本索引没有提供相关信息。
- 我的自定义按钮方案是否正确?
编辑:
教学视频里甚至还有解决方案。
lst = {"A", "B", "C"};
NewWindow("Select", <
<MODAL></MODAL>
回复:从列表框中获取选定项目 - JSL 的行为是否发生了变化?1. 模态窗口关闭后,除非使用 << 返回结果,否则您将无法再访问这些值。
2. Button(1) 表示“确定”按钮已被按下,例如,您可以使用它来控制脚本的流程。
3. 是的,按下“确定”按钮时获取值是一个不错的选择。
我通常先尝试使用 << 返回结果,如果它不适用于当前窗口,那么我会在按下“确定”按钮时获取值。即使并非必要,我几乎总是会在使用模态对话框时添加“确定”和“取消”按钮。(参见脚本指南 > 显示树 > JSL 中的模态窗口 > 构建模态窗口。)
以下是使用 << 返回结果 的示例
Names Default To Here(1);
lst = {"A", "B", "C"};
nw = New Window("Modal Dialog example",
<
<TYPE></TYPE>
<P>还有一种情况是它可能无法按预期工作(我想要添加到列表框中的项目,而不是选定的项目)。</P> <BR /> <BR /> <CODE class=" language-jsl">Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("Modal Dialog example",
<
<TYPE></TYPE> <BR /> <BR />
回复:从列表框中获取选定项目 - JSL 的行为是否发生了变化?谢谢——一如既往,非常感谢!令人费解的是,这里出现问题的地方,在我最初帖子中链接的视频里却能正常运行。
回复:从列表框中获取选定项目 - JSL 的行为是否发生了变化?可能与旧版本的 JMP 以及某些时序问题有关。