Come restituire il valore dalla casella di modifica del numero per molti elementiCiao JMPers,
Alcuni problemi relativi ai valori restituiti dalla casella di modifica del numero.
Ho fatto riferimento ad altri post ( combinando la casella numerica , raccogliere tutti i dati in una nuova finestra ) e prova a creare il mio codice.
Dato che ho molti elementi a cui assegnare un valore, digitare il numero in ogni elemento non è pratico per me.
Pertanto "Nuova finestra" e "Aggiungi" vengono utilizzati per disporre del valore restituito per molti elementi.
Alla fine il codice restituisce semplicemente il valore predefinito(1) anziché il numero che inserisco.
Potete aiutarmi a verificare quali passaggi sono errati nel mio codice?
Grazie per il grande aiuto in anticipo.
list = {"A", "B", "C","D","E","F","G"};
val={};
nw = New Window( "example",
v = V List Box(),
Button Box( "OK", Set Script( nw< )
);
show(val);
Ri: Come restituire il valore dalla casella di modifica del numero per molti elementiHai ragione nel dire che JMP continuerà l'elaborazione anche senza fare clic su OK. A meno che tu non faccia 1 delle 2 cose. Rendi la tua vetrina una finestra "modale".
nw = New Window("Test Window", Modal, ....................);
Ciò costringerà l'elaborazione ad attendere che la finestra venga cancellata.
O
Struttura il tuo codice in Functions() o Expressions, Expr(), che non eseguiranno il codice al loro interno, finché non vengono espressamente chiamati dal codice della tua finestra o da un'altra Function() o Expr()
Ri: Come restituire il valore dalla casella di modifica del numero per molti elementiCiao Jim,
Grazie davvero per la risposta professionale.
Realizzo il mio codice basandomi su tutti i tuoi suggerimenti, ma riscontro problemi relativi all'esecuzione sequenziale (la JSL esegue tutti i seguenti codici anche se non ho ancora cliccato su "OK").
Quindi devo inserire tutto il mio codice seguente in Set Script per garantire la corretta sequenza esecutiva.
Ci sono 2 opzioni che mi attraversano la mente,
1) Questo metodo può essere utilizzato nel <
2) Wait(0) funziona qui? e dove dovrei inserirlo nel codice?
Ecco il mio codice semplificato per mostrare i miei problemi, contrassegno 2 righe in blu per mostrare cosa ho fatto,
Names Default To Here( 1 );
list = {"A", "B", "C", "D", "E", "F", "G"};
val = {};
nw = New Window( "example",
v = V List Box(),
Button Box( "OK",
Set Script(
nw << close window;
New Window( "result", < );
)
)
);
For( i = 1, i <= N Items( list ), i++,
Insert Into( val, 1 );
(v << append(
Outline Box( "",
H List Box(
Text Box( list[i] ),
Eval(
Substitute(
Expr(
exq = Number Edit Box(
1,
10,
<nw2 = New Window( "fake result", <
Ri: Come restituire il valore dalla casella di modifica del numero per molti elementiEcco una versione modificata dell'esempio tratto da
Aiuto==>Indice script==>TextEditBox==>Imposta funzione
che illustra lo scopo di "{questo}"
Names Default To Here( 1 );
New Window( "Example",
xx = Text Edit Box( "pw?" ),
Text Box( "" )/* here's the sibling box, waiting to show the pw */
);
xx << SetFunction(
Function( {this},
this << passwordStyle( 1 );/* hide my display*/ /* put my password into my sibling's display */
(this << sib) << settext( this << getText );
)
);Ri: Come restituire il valore dalla casella di modifica del numero per molti elementiGrazie Jim, è davvero un buon modo e mi aiuta a capire di più su "Expr", "substitute e "Eval".
Per << SetFunction ( Funzione ( {this} , val[i] = exq << get ) ),
Immagino di poter togliere il "questo" e lasciare una parentesi vuota. (Ho provato e funziona ancora)
Ci sarà qualche rischio potenziale nel mantenere il tabellone vuoto?
Grazie.
Ri: Come restituire il valore dalla casella di modifica del numero per molti elementiIl problema che stai riscontrando è che stai presupponendo che ogni specifica separata di "exq" venga conservata in un'istanza univoca. Ciò che realmente accade è che vengono scritti uno sopra l'altro. Il codice seguente separa le istanze.
Names Default To Here( 1 );
list = {"A", "B", "C", "D", "E", "F", "G"};
val = {};
nw = New Window( "example", v = V List Box(), Button Box( "OK", Set Script( nw << close window ) ) );
For( i = 1, i <= N Items( list ), i++,
Insert Into( val, 1 );
(v << append(
Outline Box( "",
H List Box(
Text Box( list[i] ),
Eval(
Substitute(
Expr(
__exq__ = Number Edit Box(
1,
10,
<<SETFUNCTION></SETFUNCTION>