So indizieren Sie ein Tabellenfeld mit KontrollkästchenAlle,
Ich habe ein n-Tabellenfeld mit Kontrollkästchen. Ich frage mich, wie ich einige davon auswählen kann.
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>Wenn ich mir die Baumstruktur anschaue, frage ich mich, warum ich nicht auf die Elemente zugreifen kann. Ich habe so etwas wie das Folgende versucht, ohne Erfolg. Außerdem besteht das Ziel nicht darin, eine Spalte mit Kontrollkästchen, sondern ein einzelnes Kontrollkästchen in der Matrix auswählen zu können.
</CODE></PRE><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-108906" slang="en-US" mode="NONE">Betreff: So indizieren Sie ein Tabellenfeld mit Kontrollkästchen</LINGO-SUB><LINGO-BODY id="lingo-body-108906" slang="en-US" mode="NONE"><P>Dieser Code setzt die Kontrollkästchen anhand einer gespeicherten Matrix aus Einsen und Nullen.</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 />
Betreff: So indizieren Sie ein Tabellenfeld mit Kontrollkästchen@pmroz Und @txnelson ,
Vielen Dank für Ihre Antworten. Wenn ich jedoch darf, denke ich, dass der Hauptteil meiner Frage, nämlich, wie ich sie auf „Ausgewählt“ setze (Mein Fehler – ich hätte überprüfen sollen) nicht beantwortet wurde. Könnte mir einer von euch erklären, wie ich eines der Kontrollkästchen aktivieren kann?
Ich finde @pmroz Die Antwort von bietet eine Möglichkeit, das Kontrollkästchen zu indizieren, aber ich denke, dass sie nach Spalte und nicht so sehr nach jedem einzelnen Kontrollkästchen referenziert wird. Ich werde versuchen, etwas detaillierter zu veranschaulichen, was ich suche:
Der von mir gepostete Ausschnitt gibt mir eine Matrix aus auswählbaren Kontrollkästchen wie folgt:

Sollte nun ein Benutzer seine Auswahl treffen, kann ich die Auswahl wie folgt entladen:
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
);
Ich würde jedoch gerne wissen, wie ich das Tabellenfeld mit einigen vorab aktivierten Kontrollkästchen aktivieren kann. Ich habe eine Matrix in der gleichen Größe wie das Tabellenfeld, mit der ich die Kontrollkästchen aktivieren möchte.
Betreff: So indizieren Sie ein Tabellenfeld mit KontrollkästchenHier ist eine Möglichkeit, das zu tun, was Sie brauchen:
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];
Betreff: So indizieren Sie ein Tabellenfeld mit KontrollkästchenSie haben zwei Referenzprobleme mit
TB1["CheckBoxBox(1)"] << select ;
Das erste ist das
TB1["CheckBoxBox(1)"]
sucht nach einer Outline-Box mit dem Titel „CheckBoxBox()“.Das heißt, Sie haben „CheckBoxBox()“ in Anführungszeichen gesetzt und suchen daher nicht nach einem CheckBoxBox()-Objekt, sondern nach einem Objekt mit dem Titel „CheckBoxBox(1)“.
Zweitens,
<< Select
ist keine Nachricht, die CheckBoxBox() zur Verfügung hat.
TB1[CheckBoxBox(1)] << get selected ;
wäre das, was Sie wollen, außer dass << get selected die String-Werte für jedes der ausgewählten Kontrollkästchen zurückgibt, und da alle Ihre String-Werte für Ihre Kontrollkästchen auf „ “ gesetzt sind, ist das alles, was Sie wollen zurück. Sie müssen also jedes Kontrollkästchen durchlaufen und die Werte ermitteln. Hier ist ein einfaches Beispiel
For( c = 1, c <= 10, c++,
For( r = 1, r <= 10, r++,
If( T[CheckBoxBox( c )] << get( r ) == 1,
Show( c, r )
)
)
)