テーブルが閉じたときにレポートを閉じることは可能ですか?データテーブルが閉じられたときにレポートを含むウィンドウを自動的に閉じる方法があるかどうか、具体的には「<< On Close」メッセージを使用して知りたいですか? たとえば、データ テーブルから分布を作成し、その結果を他の重要な情報と共にウィンドウに追加します。 ユーザーがデータ テーブルを閉じた場合、ウィンドウでいくつかのアクションを実行したいと思います。 以下は、次のことを示しています。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
VLB = VlistBox(
Distribution(Column(:Age, :Weight));
);
win = New Window("Results",
TextBox("Other things"),
VLB
);
dt << On Close(
Show("Close script activated"); //this line is executed...
VLB << Delete Box(); //...but not this one or any following it.
Show("Remainder of script is not run...");
);
「<< On Close」メッセージを使用するのが答えのようですが、まだ機能しません。 テーブル dt を閉じると、on-close スクリプトの最初の行が実行されますが、残りの行は実行されません。 他のレポート ウィンドウが開いていることを示すメッセージが表示され、それらを閉じたい場合 ([すべて閉じる] をクリックすると、分布だけでなく結果ウィンドウ全体が閉じます)、最後に保存を求めるメッセージ (「いいえ」) が表示されます。 「X」をクリックしてテーブルを閉じると、On-Close スクリプトが実行される前に VLB への参照が削除されるのではないかと考えています。
分布のレポートを作成して、代わりにウィンドウに表示できることはわかっていますが、それは静的であり、望ましくありません。
何かご意見は?
Re: テーブルが閉じたときにレポートを閉じることはできますか?みんなありがとう。 残念ながら、このスクリプトは他のスクリプトで使用されているため、Names Default to Here(1) を使用する必要があると思いますが、このソリューションは他のユーザーにも役立つ可能性があります。
VLB参照をグローバルにすることで、NDtHコマンドで動作させることができました。 これはまだ理想的ではありませんが、いくつかの可能性を提供します。
Names Default to Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
::VLB = VlistBox(
Distribution(Column(:Age, :Weight));
);
win = New Window("Results",
TextBox("Other things"),
::VLB
);
dt << On Close(
Show("Close script activated");
::VLB << Delete Box();
Show("Remainder of script...");
);ただし、サブスクライブ機能を機能させる方法があれば、それが大好きです. テーブルに変更が加えられたときに、ウィンドウで実行したい他のアクションがあります。 再度、感謝します。
Re: テーブルが閉じたときにレポートを閉じることはできますか?ありがとうオードリー!良いキャッチも、はい、私はそれを残しました。 おそらく、vlb がスクリプト エディター ウィンドウに対してローカルであり、データ テーブルのウィンドウが onClose を実行しているときには使用できないことは理にかなっています。 vlb がテーブルのコンテキストで未定義であるというメッセージをログ ウィンドウに表示することを要求していると思います。
Re: テーブルが閉じたときにレポートを閉じることはできますか?@ニクルズまず第一に、問題/質問を再現する素晴らしいスクリプトをありがとう。 あなたが求めているものを見るのはとても簡単です。
次に、最初にスクリプトをコピーして試してみたときに、最初の行 Names Default to Here(1) をコピーしなかったことを認めなければなりません。 その行を省略すると、スクリプトが思いどおりに動作することがわかりました。 変数のスコープを制限するためにその行が必要ない場合、これは回避策になる可能性があります。 (注: 確かに、デフォルトで here() の名前を使用するのがベスト プラクティスですが、ここでは何らかのスコープの問題が発生します。)
第 3 に、動作が Mac と Windows で一貫していることがわかりました。 (そう、 @Craige_Hales 、たまたま Names Default to Here(1) も省略していませんか?)
第 4 に、Craige は dt << subscribe が可能かもしれないと提案しましたが、Names Default to Here(1); の有無にかかわらず、私はそれを機能させることができませんでした。他のレポート ウィンドウが開いているというメッセージが引き続き表示されますが、それらを閉じますか?
最後に、私は開発チームとフォローアップしており、これが対処すべきものかどうかを確認しています。
Re: テーブルが閉じたときにレポートを閉じることはできますか?OK - テクニカル サポートにメッセージを送信したので、回避策があることを願っています。 「サブスクライブ」機能を知らなかったので、共有していただきありがとうございます。 残念ながら、それは私のシステムでも機能しません。おそらく同じ根本的な理由です。 サブスクライブのスクリプト インデックス エントリで「例 1」を実行しても失敗します。 それを使用すると便利だった過去のスクリプトがたくさん思い浮かびます。
Re: テーブルが閉じたときにレポートを閉じることはできますか?@Audrey_Shull
テクニカルサポートを経由する必要があるかもしれません。 おそらく、2 つの OS で発生する順序の違いです。
https://www.jmp.com/support/help/14-2/subscribe-to-a-data-table.shtml onClose を機能させるのに十分なバリエーションを提供する可能性があります。テーブルのウィンドウが閉じる前に、サブスクリプションが以前に実行される可能性がありますが、データテーブルウィンドウが閉じたときに dt<
report<Re: テーブルが閉じたときにレポートを閉じることはできますか?
うーん。 JMP Pro 14.3.0 を搭載した Mac (Mojave 10.14.6) で実行。
Re: テーブルが閉じたときにレポートを閉じることはできますか?あなたのスクリプトは正しいと思います。Windows 14.3 で動作します。実行している JMP のバージョンは何ですか?
The platform left the windowプラットホームが窓から離れた