Cómo programar el cuadro de diálogo Coincidencia de columnasTengo un cuadro de diálogo en el que necesito que un usuario haga coincidir pares de columnas. Más o menos como lo hacemos en Unir tablas.

Ejemplo específico: tengo conjuntos de parámetros medidos experimentalmente y conjuntos de sus predicciones teóricas. Estos datos provienen de diferentes fuentes y el nombre de las columnas puede ser arbitrario, por lo que necesito que los usuarios hagan coincidir la teoría con el experimento para cada parámetro.
¿Hay algún ejemplo de cómo escribir esta parte? ¿Y cómo mantener estos pares y cómo usarlos más adelante?
Hasta ahora tengo esto, y estoy interesado en cómo escribir el cuadro en el marco verde para reflejar los pares coincidentes (como en el ejemplo anterior) y cómo mantener esos pares (¿lista de 2 listas de elementos?) y cómo eliminar \ recuperar ellos, etc.:

Y aquí está el guión:
dt = New Table( "Untitled 5",
Add Rows( 4 ),
Set Header Height( 46 ),
New Column( "X", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3, 4] ) ),
New Column( "A_Theory", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 3, 2, 3] ) ),
New Column( "B_Measured", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [4, 5, 6, 5] ) ),
New Column( "A_Measured", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 4, 3, 4] ) ),
New Column( "B_Theory", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [4, 5, 3, 4] ) )
);
notImplemented = Expr(
win = New Window( "Feature Not Implemented Yet", <<MODAL></MODAL>
secuencias de comandosRe: Cómo programar el cuadro de diálogo Coincidencia de columnasSi tuviera que adivinar, la plataforma de unión usa Listbox en el que agrega nuevos valores cuando agrega pares de columnas.
Names Default To Here(1);
dt = New Table("Untitled 5",
Add Rows(4),
Set Header Height(46),
New Column("X", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4])),
New Column("A_Theory", Numeric, "Continuous", Format("Best", 12), Set Values([1, 3, 2, 3])),
New Column("B_Measured", Numeric, "Continuous", Format("Best", 12), Set Values([4, 5, 6, 5])),
New Column("A_Measured", Numeric, "Continuous", Format("Best", 12), Set Values([1, 4, 3, 4])),
New Column("B_Theory", Numeric, "Continuous", Format("Best", 12), Set Values([4, 5, 3, 4]))
);
notImplemented = Expr(
a = clb1 << get selected;
b = clb2 << get selected;
lb << Append(a[1] || "=" || b[1]);
);
gui = Expr(
H List Box(
V List Box(
Panel Box("Theory",
clb1 = Col List Box(All, Nlines(5))
),
Panel Box("Experiment",
clb2 = Col List Box(All, Nlines(5))
)
),
Panel Box("Theory vs Experiment Matching",
H List Box(
Button Box("Match", notImplemented),
lb = List Box({}, Nlines(12))
)
)
)
);
fileLoad = New Window("Example", Show Menu(0), Show Toolbars(0), gui);
//{col1, col2} = Words((lb << get items)[1], "=");

Acabo de armar rápidamente la secuencia de comandos, así que use mejores nombres que los que usé para las variables, evite la selección de valores múltiples en los cuadros de lista de columnas y elimine los límites codificados de la indexación de columnas. Cuando necesite los valores, puede obtenerlos con << obtener elementos en la referencia del cuadro de lista, que le dará una lista de elementos. Luego use Words() para dividirlo aún más en diferentes partes.