Comment indexer dans une case de tableau de cases à cocherTous,
J'ai une case à cocher par n Table. Je me demande comment je peux sélectionner certains d'entre eux.
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>Quand je regarde l’arborescence, je me demande pourquoi je n’arrive pas à accéder aux éléments. J'ai essayé quelque chose comme ce qui suit sans succès. Aussi, le but n’est pas de pouvoir sélectionner une colonne de cases à cocher, mais une seule case à cocher dans la matrice.
</CODE></PRE><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-108906" slang="en-US" mode="NONE">Re : Comment indexer dans un tableau des cases à cocher</LINGO-SUB><LINGO-BODY id="lingo-body-108906" slang="en-US" mode="NONE"><P>Ce code définira les cases à cocher à partir d'une matrice enregistrée de 1 et de 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 : Comment indexer dans un tableau des cases à cocher@pmroz et @txnelson ,
Merci pour vos réponses. Cependant, si je peux me permettre, je pense que la partie principale de ma question, à savoir comment puis-je les définir sur sélectionnés (mon mauvais - j'aurais dû demander à vérifier) ne semble pas avoir été abordée. L'un de vous pourrait-il me guider sur la manière de cocher l'une des cases ?
Je pense @pmroz La réponse de fournit un moyen d'indexer la case à cocher, mais je pense qu'elle les référence par colonne, pas tellement par chaque case à cocher individuelle. Je vais essayer d'illustrer un peu plus en détail ce que je recherche :
L'extrait que j'ai posté me donne une matrice de cases à cocher sélectionnables comme ceci :

Désormais, si un utilisateur fait sa sélection, je peux décharger la sélection en utilisant ce qui suit :
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
);
Cependant, j'aimerais savoir comment je peux cocher la case du tableau avec certaines cases pré-cochées. J'ai une matrice de la même taille que la zone du tableau, que j'aimerais utiliser pour cocher les cases.
Re : Comment indexer dans un tableau des cases à cocherVoici une façon de faire ce dont vous avez besoin :
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 : Comment indexer dans un tableau des cases à cocherVous avez 2 problèmes de référence avec
TB1["CheckBoxBox(1)"] << select ;
Le premier est que
TB1["CheckBoxBox(1)"]
recherche une boîte de contour portant le titre "CheckBoxBox()".Autrement dit, vous avez placé "CheckBoxBox()" entre guillemets, et là, il ne recherche pas un objet CheckBoxBox(), il recherche un objet avec le titre "CheckBoxBox(1)".
Deuxièmement,
<< Select
n'est pas un message dont CheckBoxBox() dispose.
TB1[CheckBoxBox(1)] << get selected ;
serait ce que vous voulez, à l'exception du fait que << get selected renvoie les valeurs de chaîne pour chacune des cases à cocher sélectionnées, et puisque toutes vos valeurs de chaîne pour vos cases à cocher sont définies sur " ", ce sera tout ce que vous ferez être retourné. Ce que vous devrez donc faire est de parcourir chacune des cases à cocher et de trouver les valeurs. Voici un exemple simple
For( c = 1, c <= 10, c++,
For( r = 1, r <= 10, r++,
If( T[CheckBoxBox( c )] << get( r ) == 1,
Show( c, r )
)
)
)