ウィンドウの更新とウィンドウの永続化<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは。 最初にモーダル通知ウィンドウを作成し、OKを押すと2番目の編集ウィンドウを作成する式があります。 編集ウィンドウには、ウィンドウを閉じて元の式を再実行する[更新]ボタンがあります。[更新]をクリックすると、予想どおりに編集ウィンドウが閉じ、モーダル通知ウィンドウが再び表示されます。 ただし、編集ウィンドウの2回目の繰り返しでは、元のeditwinがすでに閉じられていても、名前に "2"が追加されて表示されます( "editwin 2")。 さらに、編集ウィンドウが最初に閉じられたときにすぐに実行されるはずの<< On Closeスクリプトは、通知ウィンドウの2番目のインスタンスが閉じられ、編集ウィンドウの2番目のインスタンスが開かれようとするまで実行されません。 編集ウィンドウは閉じていますが、編集ウィンドウの次のインスタンスが表示されるまでメモリに保存されているようです。
誰かがこの動作についての良い説明を持っていますか、そしてもっと重要なことに、その回避策は何ですか?
ありがとう。
デフォルトはここにあります(1)。
記号を削除();
editwin.expr = Expr(
BB1 = ButtonBox( "ok"、
ウィンドウ( "editwin")<<ウィンドウを閉じる。
;
BB2 = ButtonBox( "更新"、
ウィンドウ( "editwin")<<ウィンドウを閉じる。
editwin.expr;
;
modwin =新しいウィンドウ( "modwin"、<< Modal、
TextBox(「私は通知ウィンドウです」)、
ButtonBox( "OK"、書き込み( "Closing modwin \!N"))
;
editwin =新しいウィンドウ( "editwin"、
TextBox( "私は編集ウィンドウです")、
BB1、BB2
;
editwin <<閉じる(Write( "Closing editwin \!N"));
editwin << Set Window Size(300、200);
;
editwin.expr;
再:ウィンドウの更新とウィンドウの永続化解決しようとしている問題に対して異なるアプローチを提供する場合に備えて、このコードを提供するだけです。
ここにデフォルトの名前 ( 1 ) ;
編集ウィンドウをする = 関数 ({} 、 { デフォルトのローカル } 、
nw編集 = 新しい窓 ( "editwin" 、 << モーダル 、
テキストボックス ( 「私は編集ウィンドウです」 ) 、
ButtonBox ( "OK" ) 、
) ;
もし ( nw編集 [ "ボタン" ] == - 1 、
retVal = 1
、
retVal = 0
) ;
retVal
) ;
nw = 新しい窓 ( "modwin" 、 << モーダル 、
<< 検証時 (
編集ウィンドウをする ()
) 、
テキストボックス ( 「通知ウィンドウです」 ) 、
ButtonBox ( "OK" 、書きます ( "modwin \!Nを閉じます。" ) ; )
) ;
再:ウィンドウの更新とウィンドウの永続化あなたは正しいです、私の回避策はウィンドウのnwaming問題を解決しませんが、ウィンドウ名への依存を取り除きます。jJMLP Jmpはウィンドウの閉じ方をオペレーティングシステムに渡すので、ウィンドウが実際に閉じられたときの絶対的な制御を失います。
再:ウィンドウの更新とウィンドウの永続化面白い。 私はJMP 11.1.1 for Windows(64bit)を使用しています。 私は11対12の問題やMac対Windowsの問題としてまだ問題を却下する準備はできていません。 いずれにせよ、私はまだ私の現在の設定のための回避策を見つける必要があります。
再:ウィンドウの更新とウィンドウの永続化残念ながら、あなたのスクリプトはウィンドウの名前変更を妨げません。 私は試してみたとまったく同じ動作を取得します。
再:ウィンドウの更新とウィンドウの永続化参考までに、私はMac用のJMP 12でスクリプトを試してみましたが、私はこの問題を見ませんでした。editwinは毎回editwinと名付けられ、自動番号付けは行われませんでした。
しかし、Windows用のJMP 12では、問題を再現することができました:editwin 2、editwin 3など。リフレッシュのたびに生成されます。理由はわからない。
Txnelsonのアプローチは良い回避策を提示します。
再:ウィンドウの更新とウィンドウの永続化私はウィンドウの命名問題を解決することができませんでした。 与えられたEXPRの実行期間中、JMPはその名前を予約しているようです。 しかし、以下のコードは、ウィンドウの名前ではなく、ウィンドウのハンドルですべてのアクションを実行することによって、ウィンドウ名に対する懸念を取り除きます。
デフォルトはここにあります(1)。
記号を削除();
editwin.expr = Expr(
BB1 = ButtonBox( "ok"、
editwinx <<ウィンドウを閉じる。
;
BB2 = ButtonBox( "更新"、
editwinx <<ウィンドウを閉じる。
editwin.expr;
;
modwin =新しいウィンドウ( "modwin"、<< Modal、
TextBox(「私は通知ウィンドウです」)、
ButtonBox( "OK"、書き込み( "Closing modwin \!N"));
;
editwinx =新しいウィンドウ( "editwin"、
TextBox( "私は編集ウィンドウです")、
BB1、BB2
;
editwinx <<閉じる(Write( "Closing editwinx \!N"));
editwinx << Set Window Size(300、200);
;
editwin.expr;