延迟脚本执行直到提供用户输入?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我的脚本的第一部分提示用户选择“Y”和“By”变量。然后它输出一个数据表(我们称之为“dt2”)。
代码的后半部分依赖于用户做出选择并单击“确定”后生成的数据表 (dt2)。
我遇到的问题是,一旦窗口出现并等待用户输入,代码就会继续运行......所以代码的第二半没有数据表(dt2)可供使用,因此它不会输出任何内容...... 。
我看到我可以使用 wait( ),但这依赖于时间值(以秒为单位),我想编写这个脚本,这样它就不会继续,直到在代码的前半部分给出用户输入(从而生成必要的要执行的代码后半部分的数据表)。
预先感谢您的任何帮助/建议!
回复:延迟脚本执行直到提供用户输入?有几种方法可以控制非模式窗口行为:
1. 将您希望“确定”按钮完成的任务放入代码前面的表达式中。然后,当用户单击“确定”时,只需提供表达式即可。
好的表达式=表达式(
用户输入=用户_teb <<获取文本() ;
打印( “用户输入” ||用户输入) ;
迈温<<关闭窗口;
) ;
用户输入= ”” ;
迈温=新窗户( “获取用户输入” ,
列表框(
文本框( “输入一些文字:” ) ,
用户_teb =文本编辑框() ,
) ,
按钮盒( “好的” ,好的表达式) ,
按钮盒( “取消” ,迈温<<关闭窗口; ) ,
) ;
2. 将 OK 任务放入单独的 JSL 文件中,并使用 include() 语句运行所需的命令:
// ok_commands.jsl
用户输入=用户_teb <<获取文本() ;
打印( “用户输入” ||用户输入) ;
迈温<<关闭窗口;
// 这是对话框命令,i不存在单独的文件
用户输入= ”” ;
迈温=新窗户( “获取用户输入” ,
列表框(
文本框( “输入一些文字:” ) ,
用户_teb =文本编辑框() ,
) ,
按钮盒( “好的” ,包括( “ok_commands.jsl” );) ,
按钮盒( “取消” ,迈温<<关闭窗口; ) ,
) ;
回复:延迟脚本执行直到提供用户输入?如果要粘贴的数据来自 JMP 内部,或者可以由 JMP 作为表打开,则也可以编写插入数据表的脚本。
但对于您的场景,如果由于必须做出一些主观决定而不可避免地需要手动交互,那么我将使用带有“开始”和“完成”(或类似)按钮的非模式窗口来完成 1 和 1 中的操作分别为2。
回复:延迟脚本执行直到提供用户输入?感谢您的回复。
事实上,这对于我遇到的另一个问题非常有用,我打算
尝试从用户那里获取数据的解决方案来解决它。
在这种特殊情况下,用户很可能必须插入很多
数据,想法是他应该将其粘贴到 DT 中。
目前我的解决方案分两部分运行脚本:
1. 提示用户插入数据之前所需执行的所有操作
(数据粘贴到DT中)
2. 插入数据后所需的所有操作。
但我们都明白这是行不通的,我也不能要求用户
手动插入所有数据既耗时又低效。
你还有其他建议吗?
谢谢,
米沙
回复:延迟脚本执行直到提供用户输入?我不认为你可以绕过模式对话框。 但是您可以让用户在模式窗口中输入限制,单击“确定”时这些限制将传输到数据表。
这是一个例子:
dt =新表( “测试” ,新专栏( “数据” ,数字) ) ;
新窗户( “设定限制” ,
<<莫代尔,
桌盒(字符串列框( ”” , { “平均” , “拼箱” , “伦敦大学学院” } ) , NCB =编号列编辑框( “限制” , [ 。 , 。 , 。 ] ) ) ,
按钮盒( “好的” ,
L = NCB <<得到;
评估(
求值表达式(
柱子( dt , “数据” ) <<设置属性( 《控制限度》 , { Xbar (平均(表达式( L [ 1 ] ) ) ,拼箱(表达式( L [ 2 ] ) ) ,伦敦大学学院(表达式( L [ 3 ] )) )})))
)
) ;
// 检查是否有效
展示( L ) ;
dt :数据<<获取财产( 《控制限度》 ) ;
回复:延迟脚本执行直到提供用户输入?我正在做类似的事情并且遇到同样的问题。
模态窗口也是我最初的解决方案。 不幸的是它不起作用。
当新窗口打开时,它会阻止访问数据表(它保留在顶部):

有没有办法绕过模式窗口的顶部默认设置?
或者更好的实施想法?
提前谢谢。
回复:延迟脚本执行直到提供用户输入?如果您使用新窗口来收集用户输入,请将其设为模式对话框<< 模态
迈温=新窗户( “模态对话框示例” , <<模态,
文本框( “这是一个模式对话框” ) ,
按钮盒( “好的” ,哪个按钮= “好的” ) ,
按钮盒( “取消” ,哪个按钮= “取消” ) ,
) ;
打印( “用户点击了” ||哪个按钮) ;