多くの項目の数値編集ボックスから値を返す方法JMPersの皆さん、こんにちは。
数値エディットボックスの戻り値に関するいくつかの問題。
他の記事も参考にさせていただきました(組み合わせナンバーボックス、新しいウィンドウですべてのデータを収集します)、コードを作成してみます。
値を与える項目がたくさんあるので、すべての項目に数値を入力するのは現実的ではありません。
したがって、「新しいウィンドウ」と「追加」は、多くの項目の戻り値を破棄するために使用されます。
最終的に、コードは、入力した数値ではなく、デフォルト値 (1) を返すだけです。
私のコードのどのステップが間違っているかを確認するのを手伝ってもらえますか?
事前に多大なご協力をいただき、ありがとうございました。
list = {"A", "B", "C","D","E","F","G"};
val={};
nw = New Window( "example",
v = V List Box(),
Button Box( "OK", Set Script( nw< )
);
show(val);
Re: 多くの項目の数値エディットボックスから値を返す方法「OK」をクリックしなくても、JMP は処理を続行します。 2つのことのうち1つを実行しない限り。 表示ウィンドウを「モーダル」ウィンドウにする
nw = New Window("Test Window", Modal, ....................);
これにより、処理はウィンドウがクリアされるまで待機するようになります。
または
コードを Functions() または Expressions、Expr() に構造化します。ウィンドウ コード、または別の Function() または Expr() から明示的に呼び出されるまで、その中のコードは実行されません。
Re: 多くの項目の数値エディットボックスから値を返す方法こんにちは、ジムさん
本当に専門的なご回答ありがとうございます。
すべての提案に基づいてコードを作成しましたが、順次実行に関して問題が見つかりました (「OK」をクリックしていなくても、JSL は次のすべてのコードを実行します)。
したがって、正しい実行シーケンスを保証するために、次のすべてのコードを Set Script に入れる必要があります。
2つの選択肢が頭をよぎりますが、
1) このメソッドは <<モーダルで使用できますか? <<モーダルは、「OK」をクリックするまで JSL の実行を停止できるようです。
2) ここでは wait(0) が機能しますか?コード内のどこに配置すればよいでしょうか?
これは私の問題を示すための簡略化されたコードです。私が行ったことを示すために 2 行を青色でマークしています。
Names Default To Here( 1 );
list = {"A", "B", "C", "D", "E", "F", "G"};
val = {};
nw = New Window( "example",
v = V List Box(),
Button Box( "OK",
Set Script(
nw << close window;
New Window( "result", < );
)
)
);
For( i = 1, i <= N Items( list ), i++,
Insert Into( val, 1 );
(v << append(
Outline Box( "",
H List Box(
Text Box( list[i] ),
Eval(
Substitute(
Expr(
exq = Number Edit Box(
1,
10,
<nw2 = New Window( "fake result", <
Re: 多くの項目の数値エディットボックスから値を返す方法以下は、から引用した例の修正バージョンです。
ヘルプ==>スクリプトインデックス==>TextEditBox==>関数の設定
これは「{this}」の目的を示しています
Names Default To Here( 1 );
New Window( "Example",
xx = Text Edit Box( "pw?" ),
Text Box( "" )/* here's the sibling box, waiting to show the pw */
);
xx << SetFunction(
Function( {this},
this << passwordStyle( 1 );/* hide my display*/ /* put my password into my sibling's display */
(this << sib) << settext( this << getText );
)
);Re: 多くの項目の数値エディットボックスから値を返す方法ありがとう、ジム。それは本当に良い方法で、「Expr」、「substitute」、「eval」についてさらに理解するのに役立ちます。
<< SetFunction ( Function ( {this} , val[i] = exq << get ) ) の場合、
「this」を削除して空の括弧を残すことができると思います。 (試してみましたが、それでもうまくいきました)
ブラケットを空のままにしておくのは潜在的なリスクでしょうか?
ありがとう。
Re: 多くの項目の数値エディットボックスから値を返す方法あなたが抱えている問題は、「exq」の個別の仕様がそれぞれ固有のインスタンスに保持されていると想定していることです。 実際に起こっていることは、それらが互いに重ねて書かれていることです。 以下のコードはインスタンスを分離します。
Names Default To Here( 1 );
list = {"A", "B", "C", "D", "E", "F", "G"};
val = {};
nw = New Window( "example", v = V List Box(), Button Box( "OK", Set Script( nw << close window ) ) );
For( i = 1, i <= N Items( list ), i++,
Insert Into( val, 1 );
(v << append(
Outline Box( "",
H List Box(
Text Box( list[i] ),
Eval(
Substitute(
Expr(
__exq__ = Number Edit Box(
1,
10,
<<SETFUNCTION></SETFUNCTION>