隱藏的窗戶您好 - 當我運行我的插件時,我遇到了 JMP 視窗在其他(非 JMP)應用程式後面打開的問題。 以下步驟序列示範了我的筆記型電腦上發生的問題:
- 我打開 JMP,也打開一個 JMP 資料集。
- 我現在打開一些其他應用程式(例如 PowerPoint)並將其最大化(因此 JMP 主視窗和包含資料集的視窗都不會立即可見)。
- 我在 PowerPoint 中做了一些事情(例如編輯投影片或其他內容),但隨後我想回到 JMP 中進行分析。 因此,讓 PowerPoint 打開並最大化,我將滑鼠懸停在螢幕底部的 JMP 圖示上,然後選擇包含要分析的資料集的視窗。 該視窗現在位於 PowerPoint 頂部(儘管 JMP 主視窗仍處於隱藏狀態)在後面微軟幻燈片軟體)。
- 我現在想要運行我的加載項,因此我從資料集視窗頂部的選單中選擇它。 我的加載項所做的第一件事是顯示一個模式對話框窗口,邀請我選擇要分析的資料表的列,然後只需單擊“確定”按鈕即可繼續。 當我呼叫加載項時,模式對話方塊視窗確實出現了...但它和包含資料集的視窗立即消失在 PowerPoint 後面(給使用者留下應用程式剛剛崩潰的印象)。
我注意到,如果我不是從資料集視窗開啟插件,而是將 JMP 主視窗放在前面第一的,然後從任一視窗執行加載項,問題都不會發生(或嚴格準確地說,資料視窗仍然消失在 PowerPoint 後面,但模式對話方塊視窗仍然在頂部 - 並且分析結果隨後出現也在上面)。
我想解決方案可能的方法是在開始分析之前將一行啟動腳本插入到加載項中,使 JMP 主視窗成為當前視窗(即,將其移至恰好打開的任何其他應用程式前面),但我注意到獲取視窗清單函數在列表中不包括JMP 主視窗- 因此我無法以這種方式引用它。
有人可以建議我如何解決這個問題嗎? (我當然可以告訴所有用戶不要以上述方式使用加載項,但如果可能的話,我更願意透過腳本來防止問題發生。)
非常感謝。
分享和交流成果回覆:隱藏的窗戶我現在已經解決了隱藏視窗的問題,所以當我發布這篇文章時,我會將此問題標記為已解決。
鄭重聲明一下,該問題是由於在調用列選擇對話框之前最小化資料表(這純粹是出於美觀目的)而引起的。 如果將來有人遇到類似的問題,以下簡短的腳本可能有助於確定原因。 這需要編譯到加載項中,然後從資料表上方的主選單呼叫(不是從 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
================
*/
回覆:隱藏的窗戶嗨,伊赫,
只是為了確認,我在 MS Windows 中運行此程式(我不知道在 Mac 上是否存在相同的問題),如果版本相關,我正在運行 JMP 15.0.2,所以我的版本早於您的 JMP 15.2.1 - 但我可以存取JMP 16EA 版本8,並且我也看到了相同的行為。
簡而言之,如果 JMP 主視窗隱藏在任何完全最大化的非 JMP Windows 應用程式後面(我將其稱為“X”,因為它似乎與它是什麼應用程式沒有任何區別),當添加-in運行後,該加載項產生的任何輸出視窗也會隱藏在X 後面。 我從上面推斷,如果我能找到一種方法,在加載項運行時立即將 JMP 主視窗置於最前面,那麼問題就會解決。
我試圖將您發布的 addin.jmpcust 的結構與我使用的加載項生成器生成的結構進行比較,但我的要長得多,而且我不知道我到底在尋找什麼,所以我懷疑我必須創建一個精簡版加載項版本,然後在完成後再次尋求幫助- 附加JSL 腳本的副本。
我敏銳地意識到,如果不能複製這樣的事情,幾乎不可能診斷,所以當我有更具體的事情要做時,我會報告回來。
非常感謝您的幫忙。
回覆:隱藏的窗戶我無法在 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() 函數。