ウィンドウを閉じるにはローカル変数が必要複数のウィンドウを生成し、閉じるボタンでそれぞれを個別に閉じようとしています。しかし、それは私が期待したようには機能していません。コードを2回実行してみてください。閉じるボタンは一方のウィンドウでは機能しますが、もう一方のウィンドウでは機能しません。
::a = "The quick fox jumped over the brown log";
::b = "Hello World I want to get off now";
names default to here(1);
nw = new window("Test",
text box(::a),
text box(::b),
button box("Close", nw << close window)
);


グラフィックススクリプティングRe:ウィンドウを閉じるにはローカル変数が必要ですこれが私がそれを処理する方法です
::a = "The quick fox jumped over the brown log";
::b = "Hello World I want to get off now";
Names Default To Here( 1 );
Eval(
Substitute(
Expr(
__nw__ = New Window( "Test",
Text Box( ::a ),
Text Box( ::b ),
Button Box( "Close", __nw__ << close window )
)
),
Expr( __nw__ ),
Parse( "nw" || Char( Random Integer( 1, 999999999 ) ) )
)
);Re:ウィンドウを閉じるにはローカル変数が必要です動作するジムに感謝します。しかし、2つの質問:
1.なぜあなたはうまくいき、私のものではないのですか?
2. __nw__をランダムな整数に割り当てているようですが、それはすでに「ウィンドウハンドル」です。それはウィンドウハンドルの値を上書きしませんか?
ボーナスの質問として、なぜすべての二重アンダースコアがありますか?コードはそれらがなくても正常に機能します。
Re:ウィンドウを閉じるにはローカル変数が必要です2回目にスクリプトを実行すると、「nw」変数が最新のウィンドウを指すように変更されるため、コードは失敗します。基本的に、問題は、「Here」名前空間がスクリプトウィンドウに関連付けられていることであり、各インスタンスがスクリプトウィンドウから実行されるわけではありません。私のコードは、コードが実行されるたびに新しい変数を作成するだけです。
二重下線については、私が使用している標準です。コードがどのように機能しているかを読んで理解するのに役立つことがわかりました。