多次运行同一脚本时如何使用“关闭时”关闭正确的表?你好,
我有一个加载项输出一个图表,其中几个表格隐藏在后台。
关闭窗口后,我使用“关闭时”功能关闭相关数据表,如下所示:
New window() << On close(
Close(TableA, nosave);
Close(TableB, nosave);
) ;
问题是,如果我运行脚本两次,第一次运行的 TableA 将在第二次脚本执行期间被覆盖。
我尝试通过使用在每个脚本启动时创建的唯一 ID 来解决该问题,如下所示:
NewWindow() << On Close(
For(i = NItems(GetWindowList() << Get Window Title()), i > 0, i--,
win = GetWindow((GetWindowList() << Get Window Title())[i]);
If(Contains(win << get window title, Eval(uniqueID)) != 0,
win << closewindow()
);
)
)
不幸的是,同样的问题仍然存在,UniqueID 被覆盖。
有没有办法正确引用表格,以便关闭窗口将关闭正确的表格?
预先感谢您的帮助!
自动化和脚本编写回复:多次运行同一脚本时如何使用“关闭时”关闭正确的表?根据您的收盘价评估牌桌
Eval(EvalExpr(
New Window() << On close(
Try(Close(Expr(TableA), nosave));
Try(Close(Expr(TableB), nosave));
)
));
回复:多次运行同一脚本时如何使用“关闭时”关闭正确的表?它是如何工作的:在你原来的例子中,
New window() << On close(
Close(TableA, nosave);
Close(TableB, nosave);
) ;
TableA 和 TableB 是保存指向表的指针的变量。如果有多个实例,则变量指向分配的最后一个实例。
在@jthi示例中,
Eval(EvalExpr(
New Window() << On close(
Try(Close(Expr(TableA), nosave));
Try(Close(Expr(TableB), nosave));
)
));
您的脚本正在由 Eval(EvalExpr( ... Expr(...) ) ) 代码进行预处理,以将变量替换为其值。这使得脚本不再依赖于变量的当前变量,因为对 close() 的调用现在使用常量值(更早地从变量获取)。
如何阅读:EvalExpr(...) 查看 Expr(...) 的参数并对其求值,将求值结果替换为 Expr()。当 EvalExpr 完成时,它会返回一个表达式,仍需要对其求值才能使 OnClose(...) 方法运行。
将 Expr(...) 标记放置在正确的位置非常重要;需要确定的部分只是变量的值。例如,如果您使用 Expr(close(tableA,nosave)),则 close() 函数将运行得太快。
回复:多次运行同一脚本时如何使用“关闭时”关闭正确的表?太棒了,非常感谢!
回复:多次运行同一脚本时如何使用“关闭时”关闭正确的表?谢谢克雷格的解释,非常有帮助!我已经概括了这一点,并且很高兴在关闭窗口时关闭了正确的表。
我仍然有一个可能在某种程度上相关的问题:在这些窗口上,我设置了菜单脚本以允许向下钻取,现在由于 Eval(EvalExpr(...Expr(...))) ,它们调用了正确的参数代码。尽管如此,我在这些脚本中定义了变量以进行数据操作,但我不知道如何避免它们被覆盖:有没有办法将这些变量声明为该脚本的本地变量?
例子:
Eval(
EvalExpr(
NewWindow("Example", Outline = OutlineBox("Add-ins", Tabs = TabBox())) <<
On close(
Try(Close(Expr(TableA), nosave));
Try(Close(Expr(TableB), nosave));
)
)
);
Outline << Set Menu Script(
{"Script1", Eval(EvalExpr(Add_in_table = Expr(TableA) << Subset(Selected Rows))) ;
// some code
TableD = Add_in_table << Summary(...) ;
Eval(
EvalExpr(
NewWindow(Graph builder()) << OnClose(
Try(Close(Expr(Add_in_table), nosave));
Try(Close(Expr(TableD), nosave));
)
)
)}
);谢谢
回复:多次运行同一脚本时如何使用“On close”关闭正确的表?名称默认为此处(1);在脚本的开头或可能使用窗口范围(或框)。脚本指南包含一些有关命名空间和范围的信息
您可以从左侧菜单移动到不同的页面

或右上角的箭头
