<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />このクエリは、JMP 9 の機能をより有効に活用するためにいくつかのスクリプトをアップグレードするという私の以前のクエリに関連しています ( http://communities.sas.com/message/109908#109908 )、しかし、まったく同じ問題ではないと思います。基本的に、これはすでに選択が行われたリスト ボックスを含むウィンドウの再描画に関係します。次の簡略化された例では、リスト A から選択を行ってから、リスト A が表示されるウィンドウを再作成し、その内容が A での選択に応じた 2 番目のリスト ボックス (リスト ボックス
を表示します。ユーザーがリスト ボックス B から選択すると、その下のテキスト ボックスに最終的な選択内容が表示されます。リスト ボックス A から選択が行われた場合、新しい選択肢のリストがリスト ボックス B に提供され、ユーザーはそこから最終選択を行う必要があります。これを JMP 8 で実行すると期待通りに動作しますが、JMP 9 で実行すると無限ループが作成されます。理由がわかると思います。コメントでマークした行 (リスト ボックス A と B の両方がウィンドウに表示されるときに、リスト ボックス A で行われた選択を "<< set selected" プロパティで強調表示します) が割り当てを処理します。あたかもクリックしてその選択を行ったかのように、それに応じて動作します。もちろん、この行を削除することもできますが、そうすると、ユーザーはリスト ボックスから最終的な選択に至るまでのパスを見ることができなくなり、そうする必要があります。あるいは、単純に最初からウィンドウにすべてのリスト ボックスを含めて、ウィンドウをまったく再描画しないこともできますが、これの実際のバージョンでは、ユーザーは最初に使用するリスト ボックスの数がわかりません。そして実際に必要以上のものを一度に画面に表示したくありません。
リスト_A = { 「アンディ」 、 「ベッシー」 、 "キャリー" 、 「ダヴィナ」 、 「エディ」 } ;
リスト_B = {} ;
Expr_Redraw_NW =式(
リストボックス_A =リストボックス(リスト_A 、評価( Expr_Create_List_B )) ;
北西=新しい窓( "新しい窓" 、
Hリストボックス(
パネルボックス( "最初に選んだ" 、リストボックス_A ) 、
もし(選択> 0 、
パネルボックス( "第二希望" 、
リストボックス_B 、
テキストボックス( 「」 ) 、
テキストボックス_回答=テキストボックス( 「」 )
)
)
)
) ;
もし(選択> 0 、リストボックス_A <<選択されたセット(選択)) ; // この行が問題の原因となります。
北西<<ウィンドウを移動する( 200 、 200 ) ;
) ;
Expr_Create_List_B =式(
プレフィックス= (リストボックス_A <<選ばれる)[ 1 】 ;
見せる(プレフィックス) ;
選択= (リストボックス_A <<選択したインデックスを取得する)[ 1 】 ;
見せる(選択) ;
リスト_B = {} ;
のために(私= 1 、私<= 5 、私++、
に挿入する(リスト_B 、プレフィックス|| 「」 ||チャー(私))
) ;
リストボックス_B =リストボックス(リスト_B 、
B_選択= (リストボックス_B <<選ばれる)[ 1 】 ;
テキストボックス_回答<<テキストを設定する( 「選択内容は次のとおりです。」 || B_選択) ;
北西<<再上映
) ;
北西<<ウィンドウを閉じる;
評価( Expr_Redraw_NW ) ;
) ;
リストボックス_B =リストボックス(リスト_B 、印刷する( 「」 )) ;
テキストボックス_回答=テキストボックス( 「」 ) ;
答え= 「」 ;
選択= 0 ;
評価( Expr_Redraw_NW ) ;
仕組みを大幅に再構築することなく、この状況から抜け出す簡単な方法を誰かが考えられるでしょうか?3 つまたは 4 つのスクリプトで同様の問題が発生しているため、可能であれば修正作業を最小限に抑えたいと考えています。
ご支援いただきまして誠にありがとうございました。