Boîte à boutons JSL : correction des variables au moment de la création du boutonMon script crée une liste de boutons à l'aide d'une boucle for. chaque bouton appelle une fonction "RepGen" qui a besoin du nom du bouton pour une entrée. Le comportement du bouton ne semble pas être évalué tant que le bouton n'est pas enfoncé, moment auquel la boucle for a écrasé la variable contenant le nom du bouton. Existe-t-il un moyen d'évaluer cette variable au moment de la création du bouton plutôt que lorsqu'il est enfoncé ? Ou y a-t-il une meilleure façon de faire cela?
dtSum = dt << Summary( Group( :ColX ) );
For( i = 1, i <= N Rows( dtSum ), i++,
varName = dtSum:ColX[i];
obparts << append( Button Box( varName, RepGen( varName ) ) );
);
Re : Boîte à boutons JSL : correction des variables au moment de la création du boutonL'utilisation de Eval(EvalExpr()) ou Eval(Substitute()) vous permettra de rendre les variables d'exécution statiques.Consultez l'index des scripts pour des exemples d'utilisation.
Names Default to Here( 1 );
RepGen = function({btn_name},
{DEFAULT LOCAL},
print(btn_name);
);
vlb = Vlistbox();
btns = {"Btn 1", "Other", "Button 2 (or3)"};
for(i=1, i<=nitems(btns), i++,
vlb << Append(
Eval(
//run just this block to show that the buttons are getting evaluated at creation time
EvalExpr(
Buttonbox(btns[i], RepGen(Expr(btns[i])))//the expr will evaluate inside the evalexpr
)
)
)
);
new window("Test",
vlb
);