動的表示ボックスの式の処理皆さん、こんにちは。
JSL式の処理が頭を痛めます。私はこれでいくつかの助けに感謝します。
これが機能するコードの一部です。3つの「foo」ボックスを作成します。
Names Default To Here( 1 );
dt = New Window( "Example",
Table Box(
Col Box(
"boxes",
Text Box( "Foo" ),
Text Box( "Foo" ),
Text Box( "Foo" )
)
)
);
次に、ボックスの数を動的に割り当てられるようにしたいと思います。
式を文字列として構築し、それをEval(Parse())でラップすることで機能させることができます。しかし、このソリューションは維持するのが難しく、適切に拡張できません。Substitute()またはEvalExpr()を使用してこれを行う方法があると確信していますが、それを機能させることはできません。Grrr。
あずきっく 、あずきっく ?誰でも?
Re:動的表示ボックスの式処理ヨルダン、
これは機能しますか?
Names Default To Here( 1 );
dt = New Window( "Example",
Border Box(
Top(10),Bottom(10),Left(10),Right(10),
V List Box(
H List Box(
Text Box("How many Text Boxes?: "),
nebNBoxes = Number Edit Box(0),
Button Box("Go",buildBoxes)
),
tblBox = Table Box()
)
)
);
buildBoxes = Expr(
colBox = Col Box("boxes");
nBoxes = nebNBoxes << Get;
For(i=1,i<=nBoxes,i++,
colBox << Append(Text Box("Foo " || Char(i)));
);
If(!Is Empty(tblBox << Child), (tblBox << Child) << Delete);
tblBox << Append(colBox)
);Re:動的表示ボックスの式処理それは機能します、ありがとう。式を構築するためにSubstitute()または類似のものを使用する方法があるかどうか私はまだ知りたいです。Re:動的表示ボックスの式処理状況次第ではないかと思います。追加する必要のあるボックスの種類がわからない状況では、ボックスの種類ごとに関数を記述しないように、Substituteを使用するボックス追加関数を作成します。私は通常、Substituteを使用しなければならない場合、他の方法では簡単に(またはまったく)実行できないことを発見しました。
Re:動的表示ボックスの式処理ジョーダンさん、以下は一例です-これがあなたが探しているものですか?
乾杯、
ブレイディ
Names Default To Here( 1 );
//assume the list below is why you need to do this dynamically
textboxList = Words( "Tom,Jerry,Bugs,Daffy,Taz", "," );
nw = New Window( "Sample", vlb = V List Box() );
addTextBoxExpr = Expr(
vlb << append( _TBX = Text Box( _TEXT ) )
);
For( i = 1, i <= N Items( textboxList ), i++,
Eval(
Substitute( Name Expr( addTextBoxExpr ),
Expr( _TBX ), Parse( Eval Insert( "tb^i^" ) ),
Expr( _TEXT ), textboxList[ i ]
)
)
);
Re:動的表示ボックスの式処理はい、それは私がやろうとしていたことです。ブレイディ、ありがとう。
私にとって重要な洞察は、どちらのソリューションも一連の<< append()ステートメントを使用して、既存のコンテナーにテキストボックスを追加することです。私は1つのステートメントでコンテナーを作成してデータを追加しようとしていましたが、そこでハングアップしました。複数のステートメントを反復することは、私がやろうとした方法よりもはるかにクリーンです。
Re:動的表示ボックスの式処理これを実行する別の方法を次に示します。これはおそらくより速く実行されますが、はっきりしていません。また、テキストボックスをハンドルにバインドしていません。そのため、必要に応じてテキストボックスを更新することは困難です。
Names Default To Here( 1 );
//assume the list below is why you need to do this dynamically
textboxList = Words( "Tom,Jerry,Bugs,Daffy,Taz", "," );
nwExpr = Expr( New Window( "Sample" ) );
vlbExpr = Expr( V List Box() );
For( i = 1, i <= N Items( textboxList ), i++,
Eval( Eval Expr(
Insert Into( vlbExpr, Text Box( Expr( textboxList[i] ) ) )
) )
);
Insert Into( nwExpr, vlbExpr );
nwExpr;
Re:動的表示ボックスの式処理私はそれが古い糸であることを知っています。しかし、これですか?
NamesDefaultToHere(1);
n = 15; // Change me
cb = ColBox("My Boxes");
for(i=1, i<=n, i++, cb << append(TextBox("Item "||Char(i))));
NewWindow("Sample", TableBox(cb));Re:動的表示ボックスの式処理イアンに感謝します。提起された質問に対する素晴らしい解決策です。