Hi. Ich frage mich, ob es eine bequeme Methode für eine Schaltflächenbox gibt, um irgendwie zu wissen, wo sie sich in einer Aufstellungsbox befindet. Meine Besonderheiten:
JMP Pro 16.2.0
Ich habe ein Skript, das ein Fenster mit einer LineUp-Box erstellt. In jeder Zelle gibt es ein Schaltflächenfeld, mit dem ich eine andere Aktion ausführen möchte, je nachdem, in welcher Spalte die Schaltfläche angezeigt wird. Zum Beispiel:
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);Wenn ich das Skript so ausführe, erhalte ich:

Aber wenn ich auf eine der Schaltflächen klicke, bekomme ich den Fehler:
"Subscript Range beim Zugriff oder Auswertung von 'list2[ /*###*/i]' , list2[/*###*/I]"
Ich verstehe diesen Fehler, weil das Schaltflächenfeld bei der Ausführung keine Möglichkeit hat, den Wert von "i" abzurufen. Meine Frage: Gibt es eine Methode, die ich verwenden könnte, die es dem Schaltflächenfeld ermöglichen würde, "selbst zu identifizieren", wo es sich beim Drücken im Lineup-Feld befindet, und diesen Wert als list2-Index im Schaltflächenskript zu verwenden?
Ich verwende derzeit JSL-Zitate und den Substitute-Befehl, um die Schaltflächen zu erstellen. In diesem Fall schreibe ich den Inhalt der For-Schleife als JSL-Zitat und ersetze den Wert von i, dann Eval(Parse()). Dies ist jedoch klobig, und ich frage mich, ob es einen besseren Weg gibt, wie den Befehl „bb << Get Location“ oder „bb << Count Siblings“. Diese Befehle existieren natürlich nicht, aber vielleicht gibt es eine andere Technik?
Vielen Dank!