Come ottenere la funzionalità "Ottieni testo modificato" per un TextEditBox in un'applicazione JMP?Ciao a tutti,
Ho trovato molte soluzioni utili qui in passato, grazie per questo. Ma ora ho una domanda alla quale non ho ancora trovato una soluzione.
Ho un'applicazione JMP con un TextEditBox e due TextBox. Le caselle di testo servono solo per la visualizzazione del risultato. Voglio attivare qualche azione, a seconda della lunghezza corrente del testo in questo TextEditBox durante l'immissione del testo. Per lo script JSL, esiste una funzione nell'indice di scripting (GetTextChanged), ma come posso ottenere questa funzionalità nell'applicazione JMP?
Chiamo la funzione "displ_txt()" con lo script "TextChanged" nella sezione oggetto di TextEditBox e ho provato quanto segue nella scheda Script, ma non funziona.
Utilizzo JMP 18.0.0.
OnModuleLoad( {}, );
thisModuleInstance << Create Objects;
displ_txt = Function( {},
teb_txt = TextEdit1 << GetText;
Try( Text2 << SetText( teb_txt ),"Error" );
If( Length( teb_txt ) > 0,
Show( Length( teb_txt ) ) //Here should be the current length after each change
);
//...what I want to do further is like
If( Length( GetTextChanged( teb_txt ) ) <= 3,
Text1 << SetText( "Len below limit" ),
Text1 << SetText( "Len above limit" )
);
);
Grazie in anticipo,
opaco
Automazione e scriptingfinestreRi: Come ottenere la funzionalità "Ottieni testo modificato" per un TextEditBox in un'applicazione JMP?Cosa stai cercando di fare con Ottieni testo modificato? Ottieni testo modificato restituisce la funzione legata a Imposta testo modificato nella casella di modifica del testo.
displ_txt = Function( {},
teb_txt = TextEdit1 << GetText;
Try( Text2 << SetText( teb_txt ),"Not OK" );
If( Length( teb_txt ) > 0,
Show( Length( teb_txt ) ) //Here should be the current length after each change
);
//...what I want to do further is like
If( Length(teb_txt) <= 3,
Text1 << SetText( "Len below limit" ),
Text1 << SetText( "Len above limit" )
);
);

Potrebbero verificarsi comportamenti strani finché non esegui il primo commit (fai clic all'esterno della casella di modifica del testo o premi Invio).
Ri: Come ottenere la funzionalità "Ottieni testo modificato" per un TextEditBox in un'applicazione JMP?che ne dici della sceneggiatura:

ogni volta che gli utenti selezionano la casella di modifica del testo e finiscono lì, verrà attivato lo script .
Lo script sembra essere leggermente "in anticipo" rispetto al testo modificato :
Quando inserisci displ_txt() lì, restituisce già la nuova lunghezza una volta che l'utente termina l'immissione, non 1 passaggio dopo.
Ri: Come ottenere la funzionalità "Ottieni testo modificato" per un TextEditBox in un'applicazione JMP?Questo codice dovrebbe darti alcune idee:
filter_text = Function( {this, entered_txt},
{msg},
// only attempt to filter if there is any text
If( entered_txt != "",
if (length(entered_txt) <= 3,
msg = "Len below limit",
msg = "Len above limit"
);
message_tb << set text(msg);
);
); // end filter_text function
nw = new window("Test String Length",
user_tb = textedit box("",
<< set text changed(filter_text)),
message_tb = text box("")
);Ri: Come ottenere la funzionalità "Ottieni testo modificato" per un TextEditBox in un'applicazione JMP?La ringrazio per la risposta. Sfortunatamente, il mio obiettivo era ottenere il testo senza impegno. Pertanto, Script non farà esattamente quello che voglio.
Ri: Come ottenere la funzionalità "Ottieni testo modificato" per un TextEditBox in un'applicazione JMP?Grazie, PMroz. La tua soluzione mi ha portato al seguente codice, che funziona come previsto.
filter_text = Function( {this, entered_txt},
{msg},
// only attempt to filter if there is any text
If( entered_txt != "",
If( Length( entered_txt ) <= 3,
msg = Char( entered_txt ) || " is below length limit",
msg = Char( entered_txt ) || " is above length limit"
);
Text2 << set text( msg );
)
); // end filter_text function
TextEdit1 << set text changed( filter_text );