動態顯示框的表達式處理嗨伙計,
JSL表達式處理使我很頭疼。感謝您的幫助。
這是一些有效的代碼-創建三個“ 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()來實現,但是我無法使其正常工作。rr
@brady_brady , @joseph_morgan ?任何人?
關於動態顯示框的表達式處理約旦,
這樣行嗎?
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)
);關於動態顯示框的表達式處理確實可以,謝謝。我仍然很想知道是否有一種方法可以使用Substitute()或類似的方法來構建表達式。關於動態顯示框的表達式處理我認為這將取決於具體情況。在我不知道需要添加哪種盒子的情況下,我可以創建一個使用Substitute的盒子添加函數,以避免為每種盒子類型編寫函數。我通常會發現,當不得不使用Substitute時,就無法通過其他任何方式更輕鬆地(或根本無法做到)。
關於動態顯示框的表達式處理嘿喬丹,下面是一個例子-這是您要尋找的嗎?
乾杯,
布雷迪
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 ]
)
)
);
關於動態顯示框的表達式處理是的,這就是我想要做的。非常感謝布雷迪。
對我而言,關鍵的見解是,這兩種解決方案都使用一系列<< << append()語句將文本框添加到現有容器中。我試圖在一個語句中創建並填充容器,這就是我掛斷的地方。與我嘗試的方式相比,遍歷多個語句要乾淨得多。
關於動態顯示框的表達式處理這是另一種方法,它可能運行得更快,但我感覺不太清楚。另外,我還沒有將文本框綁定到句柄,因此如果需要,更新文本框會更加困難。
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;
關於動態顯示框的表達式處理我知道這是一個舊線程。但這是嗎?
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));關於動態顯示框的表達式處理感謝Ian,這個問題很好地解決了。