JSL:启动平台对话框以供用户输入,然后修改报告我的头撞在墙上,必须有一个简单的方法来做到这一点,但我很茫然。
这是我想要的方案:
1)运行脚本应调出“发行”平台启动对话框,以便用户进行选择
2)单击“确定”,将句柄返回到结果报告,以便可以对其进行寻址和修改。
通过创建自定义的模态对话框,解析结果并将它们传递给Distribution平台,我可以轻松地达到相同的结果。但是我要允许用户运行常规的“分发启动”对话框。
有任何想法吗?
回复:JSL:启动平台对话框以供用户输入,然后修改报告约旦,
这是一个脚本示例使用action()进行指导。
还是这个做你想做的 ?
斯坦
回复:JSL:启动平台对话框以供用户输入,然后修改报告乔丹,
运行此命令并滚动到报告底部,以查看它是否满足您的要求:
Names Default To Here(1);
dt = astable(J(20,1,Random Uniform()));
grabHandle = expr(
distHandle = current report();
doTheRest
);
dt << distribution(action(grabHandle));
doTheRest = expr(
for(i=1, i<=3, i++, distHandle[outlinebox(1)] << append(textbox("Yay!")))
);
注意,由于“ doTheRest”是grabHandle调用的表达式,因此直到用户单击“确定”按钮,它才会运行。否则,这3个附录将尝试立即运行;这将导致错误,因为distHandle将是未定义的,因为尚未创建分发报告。因此,您需要将任何依赖于分发报告的/下游的内容包装在一个表达式中,无论Action()函数的参数是什么表达式,都可以在其中调用它。
谢谢 @stan_koprowski ,用于提及Action()函数... 我不知道它的存在。
干杯,
布雷迪
回复:JSL:启动平台对话框以供用户输入,然后修改报告谢谢 @brady_brady 这正是我所需要的。无法使Action()正常运行,嵌套表达式可以解决问题。甜!
任何阅读此线程的开发人员,这难道不容易吗?希望有一种更干净的方法对此进行编码。
约旦
回复:JSL:启动平台对话框以供用户输入,然后修改报告进行更多操作,似乎甚至不需要嵌套表达式。这也适用:
Names Default To Here( 1 );
dt = As Table( J( 20, 1, Random Uniform() ) );
dt << distribution(
action(
distHandle = Current Report();
For( i = 1, i <= 3, i++,
distHandle[Outline Box( 1 )] << append( Text Box( "Yay!" ) )
);
)
);
我撤回之前的评论,以寻求更好的编码方式!
让我感到震惊的是,Action()不像一个模态对话框-它不会停止脚本执行。分发调用之后的任何代码都将立即执行,甚至在用户单击“确定”之前也是如此。用户输入后需要发生的所有事情都必须包装在Action()参数内。
再次感谢 @brady_brady 和 @stan_koprowski 用于显示方式。