obtener datos del cuadro de visualización almacenados dentro de una matriz asociativaOye,
Estoy tratando de tener una matriz que contenga información como clave y muestre cuadros como valores, pero parece que no puedo obtener su estado correcto (para la casilla de verificación) después; todas las casillas de verificación devuelven 0 incluso si se presionan.
Parece que no puedo entender si eso se debe a un problema de sintaxis o algo más profundo, aquí está mi código:
MainDisplayBox = V List Box();
DisplayArray = Associative Array();
current data table(dt);
For Each Row(
DisplayArray[char(:Col1)] = list(checkbox(""),hlist box(
text box(char(:Col1)||": suggested value: "),
Text Edit Box(round(:Col2,3)),
));
MainDisplayBox << append(hlistbox(eval((DisplayArray[Col1][1])),eval((DisplayArray[Col1][2]))));
);
OffsetCloseButton = Button Box("close",OffsetWindow<<CLOSE window=""></CLOSE>Gracias,
Ben.
ScriptingRe: obtener datos del cuadro de visualización almacenados dentro de una matriz asociativaHay algo mal al menos en cómo está guardando las referencias de Combo Box en DisplayArray. Puede verlo con bastante facilidad al verificar los valores que tiene DisplayArray. Las casillas de verificación se ven como:
Check Box("")Cuando deberían verse como algo como esto:
nw = new window("", cb = checkbox("test")); //<STRONG>cb = DisplayBox[CheckBoxBox]</STRONG>
Por lo tanto, está guardando una nueva casilla de verificación con valores vacíos en su DisplayArray, no un DisplayBox que hace referencia a una casilla de verificación.
También creo que podría haber una forma más sencilla de crear esta ventana de selección de casilla de verificación que la que tiene actualmente. ¿Podría proporcionar, por ejemplo, una imagen y lo que quiere que haga? Por ejemplo, actualmente está recorriendo cada fila en la tabla de datos con For Each Row () y luego usando Associative Array () para guardar los cuadros de visualización. Associative Array solo tendrá un valor por clave, por lo que si tiene valores duplicados en: Col1, solo obtendrá el último "valor".
Ejemplo rápido usando la tabla de datos de Big Class que puede darle algunas ideas:
Ver más...Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
keys = Associative Array(dt:name) << get keys;
collection = Associative Array();
vlb = V List Box();
For(i = 1, i <= N Items(keys), i++,
collection[keys[i]] = {};
hlbTemp = H List Box(
collection[keys[i]][1] = Check Box(""),
Text Box(keys[i] || ": suggested value"),
collection[keys[i]][2] = Text Edit Box(dt:height[i])
);
vlb << Append(hlbTemp);
);
//show(collection);
nw = New window("UI", << modal,
v list box(
vlb,
Button Box("OK",
For(i = 1, i <= N Items(keys), i++,
If(collection[keys[i]][1] << get == 1,
Insert Into(pressed, keys[i])
);
);
show(pressed);
)
);
);