隠しウィンドウこんにちは-私のアドインを実行しているときに、他の(非JMP)アプリケーションの背後でJMPウィンドウが開くという問題があります。 次の一連の手順は、ラップトップで発生する問題を示しています。
- JMPを開き、JMPデータセットも開きます。
- ここで、他のアプリケーション(PowerPointなど)を開いて最大化します(したがって、JMPホームウィンドウもデータセットを含むウィンドウもすぐには表示されません)。
- PowerPointで何かをします(スライドの編集など)が、JMPでの分析に戻りたいと思います。 そこで、PowerPointを開いて最大化したまま、画面下部のJMPアイコンにマウスを合わせ、分析するデータセットを含むウィンドウを選択します。 このウィンドウはPowerPointの上に配置されます(ただし、JMPホームウィンドウはまだ非表示になっています)後ろにパワーポイント)。
- アドインを実行したいので、データセットウィンドウの上部にあるメニューからアドインを選択します。 アドインが最初に行うことは、モーダルダイアログウィンドウを表示することです。分析するデータテーブルの列を選択するように求められます。その後、[OK]ボタンをクリックして続行します。 アドインを呼び出すと、モーダルダイアログウィンドウが実際に表示されます...だがそれとデータセットを含むウィンドウの両方がPowerPointの後ろにすぐに消えます(アプリケーションがクラッシュしたばかりの印象をユーザーに与えます)。
データセットウィンドウからアドインを開く代わりに、JMPホームウィンドウを前面に表示することに注意してください。最初、次にいずれかのウィンドウからアドインを実行すると、問題は発生しません(または、厳密には、データウィンドウはPowerPointの背後に表示されませんが、モーダルダイアログウィンドウは上部に残ります-その後、分析結果が表示されます上にも)。
私はその解決策を考えていますかもしれない分析を開始する前に、JMPホームウィンドウを現在のウィンドウにする(つまり、開いている他のアプリケーションの前に移動する)1行の起動スクリプトをアドインに挿入する必要がありますが、注意してください。 Get Window List関数は、リスト内にJMPホームウィンドウを含まないため、そのように参照することはできません。
誰かが私がこれを解決する方法を提案できますか? (もちろん、すべてのユーザーに上記の方法でアドインを使用しないように指示することもできますが、可能であれば、スクリプトを介して問題が発生しないようにしたいと思います。)
どうもありがとう。
データ表スクリプティング再:隠されたウィンドウWindowsのJMP15.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ファイル内のどこかにNewWindow()関数があります。
再:隠されたウィンドウこんにちはIH、
確認のために、私はこれを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ホームウィンドウから)。
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
================
*/