Salut. Je me demande s'il existe une méthode pratique pour qu'une boîte à boutons sache en quelque sorte où elle se trouve dans une boîte de programmation. Mes spécificités :
JMP Pro 16.2.0
J'ai un script qui crée une fenêtre avec une boîte LineUp. Dans chaque cellule, il y a une boîte à boutons dans laquelle je souhaite effectuer une action différente, en fonction de la colonne dans laquelle le bouton apparaît. Par exemple:
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);Si j'exécute le script tel quel, j'obtiens:

Mais quand je clique sur l'un des boutons, j'obtiens l'erreur :
"Plage d'indices dans l'accès ou l'évaluation de 'list2[ /*###*/i]' , list2[/*###*/I]"
Je comprends cette erreur car il n'y a aucun moyen pour la boîte à boutons de rappeler la valeur de "i" lors de son exécution. Ma question: existe-t-il une méthode que je pourrais utiliser qui permettrait à la boîte à boutons de "s'identifier" où elle se trouve dans la boîte de ligne lorsqu'elle est pressée, et d'utiliser cette valeur comme index list2 dans le script du bouton?
J'utilise actuellement JSL Quotes et la commande Substitute pour créer les boutons. Dans ce cas, j'écris le contenu de la boucle For sous la forme d'un devis JSL et remplace la valeur de i, puis Eval(Parse()). C'est maladroit cependant, et je me demande s'il existe un meilleur moyen, comme une commande "bb << Get Location" ou "bb << Count Siblings". Ces commandes n'existent pas bien sûr, mais peut-être existe-t-il une autre technique ?
Merci!