动态显示框的表达式处理嗨伙计,
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,这个问题很好地解决了。