Cuadro de lista que muestra todas las tablas abiertasEstoy tratando de construir un cuadro de lista que enumere toda la tabla de datos abierta y se actualice automáticamente con la tabla recién abierta / recién cerrada. Comencé con el siguiente script pero, por alguna razón, la función onClose no funciona.
Agradezco la ayuda 
names default to here(1);
f1 = function ({Temp_list},
T_list = Temp_list << get name();
lb << remove all;
lb << append (T_list)
);
f2 = function ({Temp_list},
T_list = Temp_list << get name();
lb << remove all;
lb << append (T_list)
);
asub = Subscribe to data table list( , onopen(f1));
Subscribe to data table list(asub , onclose(f2));
nw = new window("Trial",show menu(0),
vlistbox(
T_list = get data table list ();
lb = listbox(T_list);
)
);
ScriptingRe: cuadro de lista que muestra todas las tablas abiertasUsando el JSL a continuación, esto es lo que he descubierto.
Names Default To Here( 1 );
f2 = Function( {Temp_list},
T_list = Get Data Table List();
lb << remove all;
lb << append( T_list );
show("Close");
);
f1 = Function( {Temp_list},
T_list = Get Data Table List();
lb << remove all;
lb << append( T_list );
show("add");
);
asub = Subscribe to Data Table List( , onopen( f1 ) );
Subscribe to Data Table List(asub , onclose( f2 ) );
nw = New Window( "Trial",
Show Menu( 0 ),
V List Box(
T_list = Get Data Table List();
lb = List Box( T_list );
)
);
- El cuadro de lista creado agregará nuevas tablas de datos sin error.
- La función f1 se ejecuta una vez por cada adición
- Si cierra una tabla de datos, no se eliminará del cuadro de lista.
- Si cierra una segunda tabla de datos, la tabla de datos cerrada anterior se eliminará del cuadro de lista.
- Si cierra el cuadro de lista y ejecuta JSL por segunda vez, y cierra una tabla de datos, se ejecutará dos veces una función f2.Se ejecutará la función f2 de la primera ejecución de JSL, seguida de la ejecución de la segunda instancia de la función f2.Esto se puede mostrar cambiando la declaración Show ().Si la declaración Show se cambió de
Show( "Close" );
paraShow( "Close 2" );
al cerrar una tabla de datos, se mostrarán ambas versiones de la declaración Show (),
- Las ejecuciones posteriores de JSL agregan copias adicionales de la función f2, y cada copia se ejecuta para cada cierre de la tabla de datos.
- Clear Globals y Clear Symbols no eliminan las versiones anteriores de la función f2.
Esto es claramente un error de JMP y debe enviarse al personal de soporte de JMP.
Les he enviado el error.
Re: cuadro de lista que muestra todas las tablas abiertasGracias @txnelson !! Ese es exactamente el error que encontré. Supongo que mientras tanto tendré que encontrar una solución para esto.
Re: cuadro de lista que muestra todas las tablas abiertasDebería poder agregar nuevos valores a lb y eliminar solo el cerrado con índice (usando Contains () para obtener el índice) también agregaron variables locales a las funciones.
Names Default To Here(1);
f1 = function ({Temp_list}, {tableList},
tableList = Temp_list << get name();
lb << append (tableList)
);
f2 = function ({Temp_list}, {tableList},
tableList = Temp_list << get name();
lb << Remove Item(Contains(lb << get items, tableList));
);
asub = Subscribe to data table list( , onopen(f1));
Subscribe to data table list(asub , OnClose(f2));
nw = new window("Trial",show menu(0),
vlistbox(
lb = listbox(get data table list ());
)
);Re: Cuadro de lista que muestra todas las mesas abiertasGracias @jthi ! ¡Eso funciona!
Si no le importa, ¿podría mostrar también cómo configuraría la cláusula "OnRename"?