다이내믹 디스플레이 박스의 표현 처리안녕 여러분,
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 ()을 사용 하여이 작업을 수행 할 수있는 방법이 있다고 확신하지만 작동시킬 수는 없습니다. Grrr.
@ , joseph ? 누군가?
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 : 다이내믹 디스플레이 박스의 표현 처리나는 그것이 상황에 달려 있다고 생각합니다. 어떤 종류의 상자를 추가해야하는지 모르는 경우 각 상자 유형에 대한 함수 작성을 피하기 위해 대체를 사용하는 상자 추가 기능을 작성할 수 있습니다. 대체적으로 대체를 사용해야 할 때 다른 방법으로 더 쉽게 (또는 전혀) 수행 할 수 없다는 것을 알았습니다.
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 : 다이내믹 디스플레이 박스의 표현 처리네, 제가하려고했던 것입니다. 많은 Brady에게 감사합니다.
나에게 가장 중요한 통찰은 두 솔루션 모두 일련의 << append () 문을 사용하여 기존 컨테이너에 텍스트 상자를 추가한다는 것입니다. 하나의 문장으로 컨테이너를 만들고 채우려 고했지만 그 곳에서 전화를 끊었습니다. 여러 문장을 반복하는 것은 내가 시도한 방법보다 훨씬 깨끗합니다.
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 : 다이내믹 디스플레이 박스의 표현 처리제기 된 질문에 대한 훌륭한 솔루션 인 Ian에게 감사드립니다.