隠しウィンドウこんにちは。アドインを実行しているときに、他の (JMP 以外の) アプリケーションの背後で JMP ウィンドウが開くという問題があります。 次の一連の手順は、ラップトップで発生する問題を示しています。
- JMP を開き、JMP データ セットも開きます。
- ここで、他のアプリケーション (PowerPoint など) を開いて最大化します (そのため、JMP ホーム ウィンドウもデータ セットを含むウィンドウもすぐには表示されません)。
- PowerPoint で何かを行った後 (スライドの編集など)、JMP での分析に戻りたいと考えています。 そこで、PowerPoint を開いて最大化したまま、マウスを画面下部の JMP アイコンの上に置き、分析したいデータ セットを含むウィンドウを選択します。 このウィンドウは現在、PowerPoint の上に表示されています (ただし、JMP ホーム ウィンドウはまだ非表示になっています)。後ろパワーポイント)。
- アドインを実行したいので、データ セット ウィンドウの上部にあるメニューからアドインを選択します。 アドインが最初に行うことは、分析したいデータ テーブルの列を選択するように促すモーダル ダイアログ ウィンドウを表示することです。その後、[OK] ボタンをクリックして続行します。 アドインを呼び出すと、モーダル ダイアログ ウィンドウが実際に表示されます...しかしそれとデータ セットを含むウィンドウの両方がすぐに PowerPoint の背後に消えます (アプリケーションがクラッシュしたという印象をユーザーに与えます)。
データ セット ウィンドウからアドインを開く代わりに、JMP ホーム ウィンドウを前面に移動すると、初めをクリックし、いずれかのウィンドウからアドインを実行すると、問題は発生しません (厳密に言えば、データ ウィンドウは引き続き PowerPoint の背後に消えますが、モーダル ダイアログ ウィンドウは上部に残ります。その後、分析結果が表示されます)。上にも)。
考えているのは解決策そうかもしれない分析を開始する前に、アドインに 1 行の起動スクリプトを挿入して、JMP ホーム ウィンドウを現在のウィンドウにする (つまり、たまたま開いている他のアプリケーションの前に移動する) 必要がありますが、 Get Window List 関数では、リスト内に JMP ホーム ウィンドウが含まれていないため、そのように参照することはできません。
これを解決する方法を誰かが提案できますか? (もちろん、上記の方法でアドインを使用しないようにすべてのユーザーに伝えることもできますが、可能であれば、スクリプトを使用して問題が発生しないようにしたいと考えています。)
どうもありがとう。
データ表スクリプティングRe: 隠れた窓隠しウィンドウの問題は解決したので、これを投稿するときにこの問題は解決済みとしてマークします。
念のために言っておきますが、この問題は、列選択ダイアログが呼び出される前にデータ テーブルが最小化されていたことが原因でした (これは純粋に見た目を良くする目的で行ったものです)。 将来、誰かが同様の問題に遭遇した場合、次の短いスクリプトが原因の特定に役立つ可能性があります。 これは、アドインにコンパイルしてから、データ テーブルの上のメイン メニューから呼び出す必要があります (いいえ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
================
*/
Re: 隠れた窓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 スクリプトのコピーを添付して、もう一度助けを求めてください。
このようなことを再現できない場合、診断することはほとんど不可能であることを私は痛感しているので、もっと具体的なことを続けることができたら、また報告します.
ご協力いただき誠にありがとうございます。
Re: 隠れた窓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() 関数があります。