隐藏的Windows嗨-当我运行我的插件时,我在其他(非JMP)应用程序后面打开JMP窗口时遇到问题。 以下步骤序列说明了笔记本电脑上出现的问题:
- 我打开了JMP,也打开了JMP数据集。
- 现在,我打开其他一些应用程序(例如PowerPoint)并将其最大化(因此,“ JMP主窗口”和包含数据集的窗口都不会立即可见)。
- 我在PowerPoint中做一些事情(例如编辑幻灯片或其他操作),但是我想返回到JMP中的分析。 因此,将PowerPoint打开并最大化,将鼠标悬停在屏幕底部的JMP图标上,然后选择包含要分析的数据集的窗口。 现在,该窗口位于PowerPoint的顶部(尽管JMP主窗口仍处于隐藏状态在后面微软幻灯片软件)。
- 现在,我想运行我的加载项,因此我从数据集窗口顶部的菜单中选择了该加载项。 外接程序要做的第一件事是显示一个模式对话框窗口,邀请我选择我要分析的数据表的列,然后单击“确定”按钮继续。 当我调用外接程序时,确实出现了模态对话框窗口...但它和包含数据集的窗口都会立即在PowerPoint后面消失(给用户留下应用程序刚刚崩溃的印象)。
我注意到,如果不是从数据集窗口中打开加载项,而是将JMP主窗口置于最前面第一的,然后从任何一个窗口运行加载项,都不会发生问题(或者严格来说是准确的,数据窗口仍在PowerPoint后面消失,但模式对话框窗口仍位于顶部-分析结果随后出现在顶部)。
我在想解决方案可能是在分析之前将单行启动脚本插入到加载项中,该脚本使JMP主窗口成为当前窗口(即,将其移动到碰巧打开的任何其他应用程序的前面),但是我注意到“获取窗口列表”功能未在列表中包括JMP主窗口-因此,我无法以这种方式引用它。
有人可以建议我如何解决这个问题吗? (我当然可以告诉所有用户不要以上述方式使用外接程序,但我更愿意通过脚本来防止出现此问题。)
非常感谢。
数据表脚本编写回复:隐藏的Windows我无法在Windows的JMP 15.2.1上复制此文件。这是我在外接程序菜单中如何调用大多数窗口的方法,也许与您使用的有所不同?
在addin.jmpcust内部:
<jm:command>
<jm:name>ABOUT</jm:name>
<jm:caption>About</jm:caption>
<jm:action type="path">$ADDIN_HOME(com.domain.subdomain)\addinAbout.jsl</jm:action>
<jm:icon type="none"></jm:icon>
</jm:command>
在addinAbout.jsl文件中的某个位置是一个New Window()函数。
回复:隐藏的Windows嗨,我,
只是为了确认一下,我正在MS Windows中运行它(我不知道在Mac上是否也存在相同的问题),并且如果版本相关,我正在运行JMP 15.0.2,因此我的版本早于您的JMP。 15.2.1-但我可以访问JMP 16EA版本8,并且在那里也看到了相同的行为。
简而言之,如果在添加时将JMP主窗口隐藏在任何完全最大化的非JMP Windows应用程序之后(我将其称为“ X”,因为它似乎对什么应用程序都没有影响)。运行-in时,该外接程序生成的任何输出窗口也会隐藏在X后面。 从以上内容可以推断出,如果我能找到一种方法,只要在运行外接程序时立即将JMP Home Window脱颖而出,就可以解决该问题。
我试图将您发布的addin.jmpcust的结构与我使用的Add-In Builder生成的结构进行比较,但是我的结构要长得多,而且我不知道我要寻找的是什么,所以我怀疑我将不得不创建一个已被裁剪的插件版本,然后再寻求帮助-附加JSL脚本的副本-完成后。
我敏锐地意识到,类似这样的事情如果无法复制,几乎是无法诊断的,因此,当我要进行更具体的事情时,我会报告。
非常感谢您的帮助。
回复:隐藏的Windows现在,我已经解决了隐藏窗口的问题,因此我将其发布时将其标记为已解决。
仅出于记录目的,问题是由于在调用列选择对话框之前已将数据表最小化(这纯粹是出于修饰目的,我只是这样做)。 如果将来有人遇到类似问题,则以下简短脚本可能有助于确定原因。 这需要编译成一个插件,然后从数据表上方的主菜单中调用(不是从Windows任务栏中打开数据表后,请从JMP主窗口中进行操作。
Names Default to Here(1);
fnSelectColumn = function({dt}, {default local},
new window("Column Selection", << modal(1),
clb = ColListBox(dt, all, Output = (clb << get selected), << set max selected(1))
);
Output
);
expr_Load_DT = expr(
dt = current data table();
if(type(dt)=="Empty",
dt = open(PickFile( "Select the JMP data set to be analyzed:",, {"JMP Data Files|JMP"} ));
)
);
/*
================
START OF PROGRAM
================
*/
Intro = "There's another full-screen Windows application open right now, and you've just loaded the data table you can see ";
Intro = Intro || "behind this window from the Windows Taskbar, prior to selecting a column for analysis.\!r\!rHowever, the ";
Intro = Intro || "modal window containing the column selection dialog will disappear behind the other Windows application if the ";
Intro = Intro || "data table is minimized prior to the column selection dialog being displayed. (If it hasn't, there's no problem.)";
MinimizeYN = 1;
new window("Minimize the Data Table?", << modal(1),
VListBox(
HCenterBox(BorderBox(TextBox(Intro, << padding(5)), << padding(10), << sides(15))),
SpacerBox(size(0, 10)),
rb = RadioBox({"Minimize the data table after closing this window", "Don't minimize the data table after closing this window"},
MinimizeYN = (2 - (rb << get))
)
)
);
expr_Load_DT;
dt << minimize window(MinimizeYN); // THIS line is the one that causes the problem;
Output = fnSelectColumn(dt);
Caption("(You selected \!"" || Output[1] || "\!")"); wait(1.5); caption(remove);
/*
================
END OF PROGRAM
================
*/