¿Existe alguna forma de permitir que los usuarios seleccionen, o parezca que seleccionan, varias celdas en un cuadro de tabla, o podría usar otro objeto? Para ilustrar el caso de uso, un usuario podría querer mover las etiquetas de las bombas de la tabla izquierda a la derecha, comenzando en la fila 2 de la imagen a continuación. ¿Cómo seleccionaría el bloque de celdas para copiarlas y luego pegarlas?

Ver más...
New Window( "Editing a data table",
Show Menu( 0 ), Show Toolbars( 0 ),
h list box(
Table Box(
String Col Edit Box( "PI Point", Repeat( { "" }, 5 ) || Transform Each({v},as list(transpose(1::15)),"Pump1-" || char(v)) ),
String Col Edit Box( "Friendly Name", Repeat( { "" }, 5 ) || Transform Each({v},as list(transpose(1::15)),"Name " || char(v)) )
),
spacer box(20,20),
Table Box(
String Col Edit Box( "PI Point", {"sinusoid"} || Repeat( { "" }, 14 ) || {"Valve1", "Valve2", "Valve3"} ),
String Col Edit Box( "Friendly Name", Repeat( { "" }, 15) || {"Inlet", "Outlet", "Recirc"} )
)
)
);
La automatización de copiar y pegar los valores debería ser sencilla, pero el usuario debe indicar de dónde obtener los datos y dónde colocarlos.
El caso de uso real
Quiero mejorar la interfaz del complemento Herramientas PI de Had/OSISoft reemplazando el cuadro de texto para etiquetas y nombres descriptivos con una tabla de datos, como se discutió en un problema en GitHub . A menudo, los usuarios tienen una lista de etiquetas en una tabla JMP o una hoja de cálculo y desean copiarlas y pegarlas rápidamente en la interfaz del complemento. Copiar la tabla completa de una vez es bastante sencillo, pero si luego necesitan realizar algún cambio, es posible que solo quieran reemplazar una sección de la lista.
Con el objeto Cuadro de tabla, parece que el usuario no puede seleccionar varias celdas. ¿Existe alguna otra opción? En un momento pensé que se podía insertar una ventana de tabla de datos completa dentro de una ventana definida por el usuario, pero tal vez lo soñé.
Hasta ahora, mi mejor idea es algún tipo de lógica que, al pasar el ratón por encima, dibuje cuadrados sobre las celdas "seleccionadas", pero primero quiero ver si hay una solución más sencilla.
El comando es << nuevo cuadro de datos:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
new window("data box", dt << new data box)
¡Gracias @hogi, eso es todo!
Creo que ofrecen una experiencia de usuario bastante buena.

Código para reproducir:
Ver más...
names default to here(1);
dt1 = New Table( "dt1", invisible,
Add Rows( 20 ),
New Column( "PI Point", Character, "Nominal", Set Values(
Repeat( { "" }, 5 ) || Transform Each({v},as list(transpose(1::15)),"Pump1-" || char(v))
) ),
New Column( "Friendly Name", Character, "Nominal", Set Values(
Repeat( { "" }, 5 ) || Transform Each({v},as list(transpose(1::15)),"Name " || char(v))
) )
);
dt2 = New Table( "dt1", invisible,
Add Rows( 20 ),
New Column( "PI Point", Character, "Nominal", Set Values(
{"sinusoid"} || Repeat( { "" }, 14 ) || {"Valve1", "Valve2", "Valve3"}
) ),
New Column( "Friendly Name", Character, "Nominal", Set Values(
Repeat( { "" }, 15) || {"Inlet", "Outlet", "Recirc"}
) )
);
new window("data box",
Show Menu( 0 ), Show Toolbars( 0 ),
h list box(
ntb1 = dt1 << New Data Box;
ntb1 << close side panels;
ntb1 << Set Row ID Width( 50 );
ntb1 << Set Width(200);
ntb1 << Set Height(450);
ntb1,
spacer box( Size( 20, 20 )),
ntb2 = dt2 << New Data Box;
ntb2 << close side panels;
ntb2 << Set Row ID Width( 50 );
ntb2 << Set Width(200);
ntb2 << Set Height(450);
ntb2
),
<< On close(
try( dt1 << Close Window );
try( dt2 << Close Window );
)
);
Todavía estoy trabajando en algunos aspectos de esto, como por ejemplo cómo cambiar el tamaño del ancho de la columna dentro de ese cuadro después de que se haya dibujado la tabla, ¡pero eso lo dejo para otro día!