有沒有辦法讓按鈕盒“知道”它在容器盒中的位置?你好。 我想知道是否有一種方便的方法讓按鈕框以某種方式知道它在陣容框中的位置。 我的具體情況:
JMP 專業版 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 Quote 並替換為 i 的值,然後替換為 Eval(Parse())。 但這很笨重,我想知道是否有更好的方法,例如“bb << Get Location”或“bb << Count Siblings”命令。 這些命令當然不存在,但也許還有另一種技術?
謝謝!
自動化和腳本編寫消費者和市場研究回复:有沒有辦法讓按鈕盒“知道”它在容器盒中的位置?謝謝! 這是一個更加優雅的解決方案。
回复:有沒有辦法讓按鈕盒“知道”它在容器盒中的位置?作為對OP最初問題的回答,答案是肯定的,而且相當簡單。這是一個例子:
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], <<SET function=""></SET>回复:有沒有辦法讓按鈕盒“知道”它在容器盒中的位置?嗨,賈莫。 Eval Insert/Eval Expr/Parse 組合與我當前使用的 JSLQuote/Substitute/Parse 組合類似。 但您提供的其他解決方案正是我正在尋找的東西。 謝謝!
回复:有沒有辦法讓按鈕盒“知道”它在容器盒中的位置?我不知道獲取位置的任何直接方法,但您可以計算“位置”,或者您可以將知識插入按鈕使用 Eval Insert、Eval Expr、Parse 和 Substitute 將一個表達式插入另一個表達式。 您還可以使用 << get 按鈕名稱來獲取按鈕的文本;或 << prev sib 以及正確的引用以獲取文本框中的文本;您可以“隱藏”按鈕(或索引)的工具提示中的文本...並且還有更多選項,具體取決於您想要做什麼以及如何做。
查看更多...