如何索引到復選框錶框全部,
我有一個由 n 個複選框組成的錶框。 我想知道如何選擇其中的一些。
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>當我查看樹結構時,我想知道為什麼我無法訪問元素。 我嘗試了類似以下的操作,但沒有成功。 此外,目標不是能夠選擇一列複選框,而是能夠選擇矩陣中的單個複選框。
</CODE></PRE><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-108906" slang="en-US" mode="NONE">回复:如何索引複選框錶框</LINGO-SUB><LINGO-BODY id="lingo-body-108906" slang="en-US" mode="NONE"><P>此代碼將從保存的 1 和 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 />
回复:如何索引複選框錶框@pmroz和@tx尼爾森,
謝謝你的回复。 但是,如果可以的話,我認為我的問題的主要部分,即如何將它們設置為選中(我的壞處 - 我應該要求檢查)似乎沒有得到解決。 你們中的任何一個人都可以指導我如何選中任何復選框嗎?
我認為@pmroz的響應提供了一種對複選框進行索引的方法,但我認為它是按列引用它們,而不是按每個單獨的複選框引用它們。 我將嘗試更詳細地說明我所尋求的內容:
我發布的代碼片段為我提供了一個可選複選框的矩陣,如下所示:

現在,如果用戶做出選擇,我可以使用以下命令卸載選擇:
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
);
但是,我想知道如何在表格框中預先選中一些複選框。 我有一個與表格框大小相同的矩陣,我想用它來設置選中的複選框。
回复:如何索引複選框錶框這是一種執行您需要的方法:
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];
回复:如何索引複選框錶框您有 2 個參考問題
TB1["CheckBoxBox(1)"] << select ;
第一個是
TB1["CheckBoxBox(1)"]
正在尋找標題為“CheckBoxBox()”的大綱框。也就是說,您已將“CheckBoxBox()”放在引號中,並且它不是在尋找 CheckBoxBox() 對象,而是在尋找標題為“CheckBoxBox(1)”的對象。
第二,
<< Select
不是 CheckBoxBox() 可用的消息。
TB1[CheckBoxBox(1)] << get selected ;
將是您想要的,除了 << get selected 返回每個選定複選框的字符串值,並且由於復選框的所有字符串值都設置為“”,這將是您所要做的被退回。 因此,您需要做的是循環遍歷每個複選框並找到值。 這是一個簡單的例子
For( c = 1, c <= 10, c++,
For( r = 1, r <= 10, r++,
If( T[CheckBoxBox( c )] << get( r ) == 1,
Show( c, r )
)
)
)