优雅地退出加载项我正在编写一个加载项来对当前数据表()进行操作。 如果出现以下情况,我希望加载项正常退出而不执行任何操作:
(a) 没有当前数据表()
要么
(b) 当前数据表有 <2 列。
我似乎无法让这件事发生。 我安装了加载项并查看了生成的 .jmpcust 文件。 在脚本的最顶部,注释说“此处声明的变量和函数的范围仅限于应用程序命名空间”,我注意到这段代码:
dt = Current Data Table();
If(Is Empty(dt),
Quit Application()
);
Quit Application = Function({},
Current Window() << Close Window;
Throw()
)我*认为*是由应用程序生成器(而不是我)插入的。
完成 (a) 似乎是正确的,但我的加载项在没有 Current Data Table() 的情况下提前收费并打开其对话窗口。
有人可以帮我吗?
脚本回复:优雅地退出加载项我试图在脚本编辑器中调试它,它关闭了编辑器而不保存。 直到我重新做它并再次运行它时,我才意识到发生了什么。该函数应该在它被调用之前定义,所以这似乎是乱序的。
我从未使用过应用程序生成器。 我在调用 GUI 之前在脚本级别进行这种控制。 基本上我的脚本看起来像:
1.最初的东西
2.主要脚本功能
3.分配dt并决定是否继续GUI
4. GUI,确定按钮调用脚本函数的地方。
这是我检查数据表的方法。 您可以使用它的修改版本并检查 ncol(dt) >= 2。
dtData = current data table();
try(dtData << get name, throw(New Window("No Data Table Found",<<MODAL></MODAL>
回复:优雅地退出加载项我想我在查看 txnelson 的一篇帖子的同时找到了解决方案。 在应用程序脚本中,我输入:
If( N Table() == 0,
Throw( "Add-in requires an open data table." )
);
dt = Current Data Table();
If( N Cols( dt ) < 2,
Throw(
"Add-in requires a table with at least two columns."
)
);