Gestione delle espressioni per scatole di visualizzazione dinamicheCiao gente,
La gestione delle espressioni JSL mi fa male alla testa. Le sarei grato per l'aiuto.
Ecco un po 'di codice che funziona: crea tre caselle "pippo".
Names Default To Here( 1 );
dt = New Window( "Example",
Table Box(
Col Box(
"boxes",
Text Box( "Foo" ),
Text Box( "Foo" ),
Text Box( "Foo" )
)
)
);
Ora voglio essere in grado di assegnare dinamicamente il numero di caselle.
Posso farlo funzionare costruendo l'espressione come una stringa, quindi avvolgendola in Eval (Parse ()). Ma questa soluzione è difficile da mantenere, non si adatta bene. Sono sicuro che c'è un modo per farlo usando Substitute () o EvalExpr (), ma non riesco a farlo funzionare. Grrr.
@brady_brady , @Joseph Morgan ? Chiunque?
Ri: Gestione delle espressioni per scatole di visualizzazione dinamicaGiordania,
funziona?
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)
);Ri: Gestione delle espressioni per scatole di visualizzazione dinamicaFunziona, grazie. Sono ancora curioso di sapere se esiste un modo per usare Substitute () o simile per costruire l'espressione.Ri: Gestione delle espressioni per scatole di visualizzazione dinamicaPenso che dipenderebbe dalle circostanze. In una situazione in cui non conosco il tipo di caselle che devo aggiungere, posso creare una funzione di aggiunta della casella che utilizza Sostituzione per evitare di scrivere una funzione per ciascun tipo di casella. In genere trovo che quando si deve usare Substitute, non può essere fatto più facilmente (o per niente) in nessun altro modo.
Ri: Gestione delle espressioni per scatole di visualizzazione dinamicaEhi Giordania, di seguito è riportato un esempio: è questo ciò che stai cercando?
Saluti,
Brady
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 ]
)
)
);
Ri: Gestione delle espressioni per scatole di visualizzazione dinamicaSì, è quello che stavo cercando di fare. Grazie mille Brady.
L'intuizione chiave per me è che entrambe le soluzioni utilizzano una serie di istruzioni << append () per aggiungere caselle di testo a un contenitore esistente. Stavo cercando di creare e popolare il contenitore in una sola istruzione, ed è qui che ho appeso. Scorrere più dichiarazioni è molto più pulito del modo in cui ho provato a farlo.
Ri: Gestione delle espressioni per scatole di visualizzazione dinamicaEcco un altro modo per farlo, che probabilmente funziona più rapidamente, ma penso che sia meno chiaro. Inoltre, non ho associato le caselle di testo agli handle, quindi sarebbe più difficile aggiornare le caselle di testo se necessario.
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;
Ri: Gestione delle espressioni per scatole di visualizzazione dinamicaSo che è un vecchio thread. Ma è così?
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));Ri: Gestione delle espressioni per scatole di visualizzazione dinamicaGrazie Ian, una bella soluzione alla domanda come posta.