隱藏的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
================
*/