Pulsante JSL: corregge le variabili al momento della creazione del pulsanteIl mio script crea un elenco di pulsanti utilizzando un ciclo for. ogni pulsante chiama una funzione "RepGen" che richiede il nome del pulsante per un input. Il comportamento del pulsante non sembra essere valutato fino a quando il pulsante non viene premuto, momento in cui il ciclo for ha sovrascritto la variabile contenente il nome del pulsante. C'è un modo per valutare questa variabile nel momento in cui il pulsante viene creato anziché quando viene premuto? O c'è un modo migliore per farlo?
dtSum = dt << Summary( Group( :ColX ) );
For( i = 1, i <= N Rows( dtSum ), i++,
varName = dtSum:ColX[i];
obparts << append( Button Box( varName, RepGen( varName ) ) );
);
Oggetto: pulsante JSL: correggere le variabili al momento della creazione del pulsanteL'utilizzo di Eval(EvalExpr()) o Eval(Substitute()) consente di rendere statiche le variabili di runtime.Controlla l'indice di scripting per esempi su come usarli.
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
);