Cómo indexar en una casilla de tabla de casillas de verificaciónTodo,
Tengo una casilla de verificación de n Tabla de casillas de verificación. Me pregunto cómo puedo configurar algunos de ellos seleccionados.
LB_b = Lineup Box(N Col(1));
nR = 10;
nC = 10;
SCB1 = String Col Box( "", {} );
For( i = 1, i <= nR, i++,
SCB1 << Add Element( Char( i ) )
);
TB1 = Table Box( SCB1 );
For( i = 1, i <= nC, i++,
Insert Into( TB1, Check Box( Repeat( {" "}, nR ), <<SET heading=""></SET>Cuando miro la estructura del árbol, me pregunto por qué no puedo acceder a los elementos. Intenté algo como lo siguiente sin suerte. Además, el objetivo no es poder seleccionar una columna de casillas de verificación, sino una única casilla de verificación en la matriz.
</CODE></PRE><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-108906" slang="en-US" mode="NONE">Re: Cómo indexar en una tabla el cuadro de casillas de verificación</LINGO-SUB><LINGO-BODY id="lingo-body-108906" slang="en-US" mode="NONE"><P>Este código establecerá las casillas de verificación a partir de una matriz guardada de 1 y 0.</P>
<PRE><CODE class=" language-jsl">// Set some random values in this matrix
saved_cbmat =
[ 1 0 0 1 0 0 0 0 0 0,
0 0 0 0 0 0 0 0 0 0,
0 1 0 0 0 0 0 0 0 0,
0 1 0 0 0 0 1 0 0 0,
0 1 0 1 0 0 1 0 1 0,
0 0 0 0 0 0 0 0 0 1,
0 0 0 0 0 0 0 0 1 1,
0 0 0 0 0 0 0 0 1 0,
0 0 0 0 0 0 0 0 1 0,
0 0 0 0 0 0 0 0 0 0];
n = 10; // # rows
m = 10; // # cols
a = 1::n;
// Create a list of empty text fields as checkbox labels
cb_list = {};
for (i = 1, i <= n, i++,
cb_list[i] = "";
);
cbmat = j(n, m, 0);
// Create the window
nw = new window("Test",
tb = table box(
ncb = number col box("", a),
),
okb = button box("OK",
for (i = 1, i <= m, i++,
for (k = 1, k <= n, k++,
cbmat[k, i] = cb[i] << get(k);
),
);
show(cbmat);
nw << close window;
),
);
// Create an array of checkbox columns
cb = {};
// Add the checkboxes
for (i = 1, i <= m, i++,
cb[i] = checkbox(cb_list);
cb[i] << set heading(char(i));
tb << append(cb[i]);
);
// Preload the checkboxes from the saved matrix
for (i = 1, i <= m, i++,
for (k = 1, k <= n, k++,
on_off = saved_cbmat[k, i];
cb[i] << set(k, on_off);
),
);
TB1["CheckBoxBox(1)"] << select ; <BR />
Re: Cómo indexar en una tabla el cuadro de casillas de verificación@pmroz y @txnelson ,
Gracias por sus respuestas. Sin embargo, si se me permite, creo que la parte principal de mi pregunta, es decir, cómo los configuro como seleccionados (malo, debería haber preguntado marcada), no parece haberse abordado. ¿Alguno de ustedes podría guiarme sobre cómo puedo marcar cualquiera de las casillas de verificación?
Creo @pmroz La respuesta proporciona una forma de indexar las casillas de verificación, pero creo que hace referencia a ellas por columna, no tanto por cada casilla de verificación individual. Intentaré ilustrar con un poco más de detalle lo que busco:
El fragmento que publiqué me proporciona una matriz de casillas de verificación seleccionables como esta:

Ahora, si un usuario hace su selección, puedo descargar la selección usando lo siguiente:
NW = New Window("Test",
VLB0 = V List Box(Align(center),
LB_b
)
);
VLB0 << Append(
H List Box(
BB_TargetMatrix = Button Box( "OK",
ResMat = {};
// loop through each row
For( i = 1, i <= nR, i++,
ResMat[i] = {};
// loop through each column getting values
For( r = 1, r <= nC, r++,
ResMat[i][r] = TB1[CheckBoxBox( r )] << get( i )
);
);
ResMat = Matrix( ResMat );
)// end of button box
)// end of H List Box
);
Sin embargo, me gustaría saber cómo puedo abrir el cuadro de la tabla con algunas de las casillas marcadas previamente. Tengo una matriz del mismo tamaño que el cuadro de la tabla, que me gustaría usar para marcar las casillas de verificación.
Re: Cómo indexar en una tabla el cuadro de casillas de verificaciónAquí tienes una manera de hacer lo que necesitas:
n = 10; // # rows
m = 10; // # cols
a = 1::n;
// Create a list of empty text fields as checkbox labels
cb_list = {};
for (i = 1, i <= n, i++,
cb_list[i] = "";
);
cbmat = j(n, m, 0);
// Create the window
nw = new window("Test",
tb = table box(
ncb = number col box("", a),
),
okb = button box("OK",
for (i = 1, i <= m, i++,
for (k = 1, k <= n, k++,
cbmat[k, i] = cb[i] << get(k);
),
);
show(cbmat);
nw << close window;
),
);
// Create an array of checkbox columns
cb = {};
// Add the checkboxes
for (i = 1, i <= m, i++,
cb[i] = checkbox(cb_list);
cb[i] << set heading(char(i));
tb << append(cb[i]);
);

cbmat =
[ 1 0 0 0 0 0 0 0 0 0,
1 0 0 0 0 0 0 0 0 0,
1 0 1 0 0 0 0 0 0 0,
0 0 1 0 0 0 0 0 0 0,
0 0 1 0 1 0 0 0 0 0,
0 0 0 0 1 0 1 0 0 0,
0 0 0 0 0 0 1 0 0 0,
0 0 0 0 0 0 1 0 0 0,
0 0 0 0 0 0 0 0 0 0,
0 0 0 0 0 0 0 0 0 0];
Re: Cómo indexar en una tabla el cuadro de casillas de verificaciónTienes 2 problemas de referencia con
TB1["CheckBoxBox(1)"] << select ;
La primera es que
TB1["CheckBoxBox(1)"]
está buscando un cuadro de esquema con el título "CheckBoxBox()".Es decir, ha colocado "CheckBoxBox()" entre comillas, y por eso no busca un objeto CheckBoxBox(), sino un objeto con el título "CheckBoxBox(1)".
En segundo lugar,
<< Select
no es un mensaje que CheckBoxBox() tenga disponible.
TB1[CheckBoxBox(1)] << get selected ;
sería lo que desea, excepto por el hecho de que << get selected devuelve los valores de cadena para cada una de las casillas de verificación seleccionadas, y dado que todos los valores de cadena para sus casillas de verificación están configurados en " ", eso será todo lo que hará ser devuelto. Entonces, lo que deberá hacer es recorrer cada una de las casillas de verificación y encontrar los valores. Aquí hay un ejemplo sencillo.
For( c = 1, c <= 10, c++,
For( r = 1, r <= 10, r++,
If( T[CheckBoxBox( c )] << get( r ) == 1,
Show( c, r )
)
)
)