你好。 我想知道是否有一种方便的方法可以让按钮框以某种方式知道它在阵容框中的位置。 我的具体情况:
JMP Pro 16.2.0
我有一个脚本可以创建一个带有 LineUp 框的窗口。 在每个单元格中,都有一个按钮框,我想根据按钮出现在哪一列执行不同的操作。 例如:
Names Default to Here(1);
list = {"cat", "dog", "mouse", "kangaroo", "sloth"};
list2 = {"meow", "bark", "squeak", "hop", "zzz"};
lub = LineUpBox(NCol(2), Spacing(5));
For(i=1, i<=NItems(list), i++,
tb = TextBox(list[i]);
bb = ButtonBox(list2[i],
//Insert code for the button to somehow identify which button it is within lub.
Speak(list2[i])
);
lub << Append(tb);
lub << Append(bb);
);
New Window("Test", lub);如果我按原样运行脚本,我会得到:

但是当我点击任何一个按钮时,我得到了错误:
“'list2[ /*###*/i]', list2[/*###*/I] 的访问或评估中的下标范围”
我理解这个错误,因为按钮框在执行时无法调用“i”的值。 我的问题:有没有一种方法可以让按钮框在按下时“自我识别”它位于排队框中的位置,并将该值用作按钮脚本中的 list2 索引?
我目前正在使用 JSL Quotes 和 Substitute 命令来创建按钮。 在这种情况下,我将 For 循环的内容写为 JSL 引用并替换为 i 的值,然后是 Eval(Parse())。 不过这很笨拙,我想知道是否有更好的方法,例如“bb << Get Location”或“bb << Count Siblings”命令。 这些命令当然不存在,但也许还有另一种技术?
谢谢!