Cómo devolver el valor del cuadro de edición de números para muchos artículosHola JMPers,
Algunos problemas sobre los valores de retorno del cuadro de edición de números.
Me he referido a otras publicaciones ( combinación de caja de números , recopilar todos los datos en una nueva ventana ), y tratar de crear mi código.
Dado que tengo muchos elementos a los que se les debe dar valor, escribir un número en cada elemento no es práctico para mí.
Por lo tanto, "Nueva ventana" y "Agregar" se utilizan para disponer del valor de retorno de muchos artículos.
Eventualmente, el código simplemente devuelve el valor predeterminado (1) en lugar del número que ingresé.
¿Pueden ayudarme a verificar qué pasos están mal en mi código?
Gracias por la gran ayuda por adelantado.
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);
Re: Cómo devolver el valor del cuadro de edición de números para muchos artículosTiene razón en que JMP continuará procesando incluso sin hacer clic en Aceptar. A menos que hagas 1 de 2 cosas. Haga que su ventana de visualización sea una ventana "modal"
nw = New Window("Test Window", Modal, ....................);
Lo que obligará al procesamiento a esperar a que se borre la ventana.
O
Estructure su código en Funciones() o Expresiones, Expr(), que no ejecutarán el código dentro de ellos, hasta que se llame expresamente desde su código de ventana, o desde otra Función() o Expr()
Re: Cómo devolver el valor del cuadro de edición de números para muchos artículosHola Jim,
Realmente gracias por la respuesta profesional.
Hago mi código basado en todas sus sugerencias, pero encuentro problemas con la ejecución secuencial (el JSL ejecuta todos los siguientes códigos incluso si aún no he hecho clic en "Aceptar").
Así que tengo que poner todo mi siguiente código en Set Script para asegurar la secuencia ejecutiva correcta.
Hay 2 opciones cruzando mi mente,
1) ¿Se puede usar este método en el <
2) ¿Espera(0) funciona aquí? y donde debo ponerlo entre el codigo?
Aquí está mi código simplificado para mostrar mis problemas, marco 2 líneas en azul para mostrar lo que he hecho,
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", <
Re: Cómo devolver el valor del cuadro de edición de números para muchos artículosAquí hay una versión modificada del Ejemplo tomado de
Ayuda==>Índice de secuencias de comandos==>TextEditBox==>Establecer función
que ilustra el propósito de "{this}"
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 );
)
);Re: Cómo devolver el valor del cuadro de edición de números para muchos artículosGracias Jim, esa es realmente una buena manera y me ayuda a entender más sobre "Expr", "substitute" y "Eval".
Para << SetFunction ( Función ( {this} , val[i] = exq << get ) ),
Supongo que puedo quitar "esto" y dejar un paréntesis vacío. (Lo he intentado y todavía funcionó)
¿Habrá algún riesgo potencial para mantener el soporte vacío?
Gracias.
Re: Cómo devolver el valor del cuadro de edición de números para muchos artículosEl problema que tiene es que está asumiendo que cada especificación separada de "exq" se retiene en una instancia única. Lo que realmente está sucediendo es que se están escribiendo uno encima del otro. El siguiente código separa las instancias.
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>