JSL按钮框:在按钮创建时修复变量我的脚本使用for循环创建一个按钮列表。每个按钮调用一个函数“RepGen”,它需要输入的按钮名称。在按下按钮之前似乎不会评估按钮的行为,此时for循环已覆盖包含按钮名称的变量。有没有办法在创建按钮时而不是按下按钮时评估此变量?或者有更好的方法吗?
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:JSL按钮框:在按钮创建时修复变量使用Eval(EvalExpr())或Eval(Substitute())将使运行时变量成为静态。 检查脚本索引以获取如何使用它们的示例。
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
);