如何检测字幕框是否已关闭?你好!
我有一个脚本循环遍历数据的单元格并进行一些数据处理。
为了让用户了解它当前正在处理的单元格,我添加了这一行:
Caption("Processing "||Char(i)||" out of "||Char(Nrows(dtmed))||" Cells...");无论如何,如果我关闭标题,脚本将继续进行下一次迭代。 如果用户关闭标题框,我想要的是脚本终止。 如果标题框关闭,也许有一些功能会给我标题框的状态?
无论如何,最后的手段是这个线程:
https://community.jmp.com/t5/Discussions/Jsl-How-can-i-stop-a-script-with-a-button/td-p/6787
虽然,我担心有两个窗口(一个标题框和一个窗口框)只是为了有一个退出按钮。
谢谢您的帮助。
回复:如何检测字幕框是否已关闭?只要您跟踪表格,您就可以考虑使用“OnClose()”来做家务:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = NewWindow("Using 'On Close'", << onClose(onCloseBlock), TextBox("Close Me"));
onCloseBlock =
Expr(
Print("Closing table "||(dt << getName));
Close(dt, NoSave);
);回复:如何检测字幕框是否已关闭?@ian_jmp
我是这样设计的:
CheckBlock=Expr (
stattb<<SETTEXT></SETTEXT>不知何故,取消按钮没有发挥作用,我想我把它放在脚本中是错误的。
嗯,不幸的是,(X)按钮的异常中止留下了大量不可见的数据表。
仍在检查如何处理它。
谢谢您的帮助。
回复:如何检测字幕框是否已关闭?谢谢! 让我检查一下如何使其适应我当前的脚本。
回复:如何检测字幕框是否已关闭?看起来你不能向“Caption()”发送消息来操纵它。
调整另一个线程中的内容,您可以尝试以下操作:
NamesDefaultToHere(1);
nw = NewWindow("Stop script",
tb = TextBox("Press 'Run'... \!n"),
bb1 = ButtonBox("Run", runScript),
bb2 = ButtonBox("Cancel", stopFlag = 1),
);
nw << setWindowSize(150, 120);
runScript =
Expr(
bb1 << enable(0);
stopFlag = 0;
for(i=1,i<=100, i++,
Wait(1);
if(stopFlag,
// Stop . . .
nw << closeWindow;
Print("Stopped after "||Char(i)||" seconds.");
Stop(),
// Else update display . . .
tb << setText("Counted for "||Char(i)||" seconds.")
);
);
nw <<CLOSEWINDOW></CLOSEWINDOW>