Newb JSL Pregunta: ¿Cómo obtener el contenido de un cuadro de edición de texto en una variable?Hola,
Soy un principiante en JSL (JMP 13.1) y tengo problemas con la lógica del diálogo interactivo, especialmente cómo extraer el contenido de un cuadro de edición de texto en una variable.
Aquí hay un fragmento de un script JSL que no funciona (es decir, la variable "prefijo" no se actualiza con el contenido del cuadro de edición de texto "tt1").
prefix = "";
win = New Window (" TEST ",
<< Modal,
<< On Validate (
if (Is Missing (prefix),0,1);
),
H List Box (
Text Box (" Define Prefix "),
tt1 = Text Edit Box (""),
prefix = (tt1 << Get Text) // I cannot figure out how to assign the content of "tt1" to "prefix""
),
);
Show (tt1, prefix);Gracias por su ayuda.
Atentamente,
TS
Re: Newb JSL Pregunta: ¿Cómo convertir el contenido de un cuadro de edición de texto en una variable?Actualmente está colocando el script de asignación en una función que espera cuadros de visualización.Estos son los diferentes lugares donde podría poner la línea:
1/ según su código, está validando la ventana según el valor del prefijo, por lo que podría poner una línea antes de la prueba condicional
2/ después de la llamada de nueva ventana, para deshacer el contenido de la ventana una vez que el usuario haya hecho clic en Aceptar
3/ dentro de un evento onClose, creado usando una sintaxis similar a onValidate (logra lo mismo que (2) pero es más elegante y más robusto en plataformas Windows/Mac
4/ dentro de un controlador de eventos adjunto al propio cuadro de visualización
Dado que está validando el formulario, elegiría la primera opción:
prefix = "";
win = New Window (" TEST ",
<< Modal,
<< On Validate (
prefix = tt1 << Get Text;
if (Is Missing (prefix),0,1);
),
H List Box (
Text Box (" Define Prefix "),
tt1 = Text Edit Box (""),
),
);
Show (tt1, prefix);
Re: Newb JSL Pregunta: ¿Cómo convertir el contenido de un cuadro de edición de texto en una variable?Coloque la secuencia de comandos que establece el valor del prefijo en la secuencia de comandos que se ejecuta cuando se cambia el cuadro de edición de texto
Names Default To Here( 1 );
prefix = "";
win = New Window( " TEST ",
<<MODAL></MODAL>
Re: Newb JSL Pregunta: ¿Cómo convertir el contenido de un cuadro de edición de texto en una variable?Prueba esto
win = New Window( "Set a Value in Number Edit Box",
<<MODAL></MODAL>
Cuando se cierra la ventana modal, el valor devuelto es una lista del contenido de los cuadros que tenían asignaciones:
ganar = {numberbox = 3.1415, texteditbox = "argyle", Button(1)};
El botón (1) significa el botón OK, -1 es el botón cancelar.
win["numberbox"] es una forma de pedirle a la lista que busque entre sus miembros la asignación y devuelva el valor.
Re: Newb JSL Pregunta: ¿Cómo convertir el contenido de un cuadro de edición de texto en una variable?Hola Craig,
Gracias por su ayuda: ya intenté mover la línea "prefijo = (tt1 << Obtener texto) dentro de la llamada del cuadro de edición de texto, pero recibo un mensaje de error "El cuadro de visualización 'TextEditBox' no reconoce el mensaje 'Assign '".
Todavía no he descubierto cómo incorporar el interruptor Return ResultRe: Newb JSL Pregunta: ¿Cómo convertir el contenido de un cuadro de edición de texto en una variable?Mire los ejemplos que usan "Resultado devuelto" en https://www.jmp.com/support/help/14-2/constructores-para-ventanas-nuevas.shtml
También en tu ejemplo:
H List Box (
Text Box (" Define Prefix "),
tt1 = Text Edit Box (""),
prefix = (tt1 << Get Text) // I cannot figure out how to assign the content of "tt1" to "prefix""
),
los argumentos tt1=... y prefix=... de HListBox se ejecutan cuando se crea el hlistbox. tt1 da como resultado un textEditBox que mantiene HListBox. Estoy bastante seguro de que el valor del prefijo, "", está siendo ignorado por hlistbox. Estoy lejos de mi escritorio, pero creo que textEditBox podría ejecutar algo de JSL como segundo argumento cuando cambia el valor... tal vez quieras algo más cercano a tt1=texteditbox("", prefix=(tt1<Si eso funciona, es posible que no necesite usar "Resultado devuelto".