生成可选复选框矩阵全部,
想知道生成可选复选框矩阵的最简单方法是什么。 所以我想做的是 - 生成一个非方阵并弹出它供用户选择用户想要的矩阵中的任何位置。 只要用户可以在一列中选择多行,反之亦然 - 满足需求就很好。 任何帮助表示赞赏。
回复:生成可选复选框矩阵我意识到我迟到了,希望你已经明白了。主要问题是您从未在代码中显示表格框。我相信下一个问题是您在创建表格后立即对其进行分析。我想您想在用户有机会选中这些框后执行此操作。希望下面的代码更接近您正在寻找的内容。
Names Default To Here( 1 );
InputsLoadBasic = Expr(
LB1 = Lineup Box( N Col( 2 ) );
LB1 << Append(
Panel Box( "Test",
V List Box( V List Box( Text Box( "Arg1" ), NEB_arg1 = Number Edit Box( 2 ), Text Box( "Arg2" ), NEB_arg2 = Number Edit Box( 3 ), ) )
)
);
LB1 << Append(
Panel Box( "Selectable Matrix Test",
V List Box(
Button Box( "Enter Target Matrix",
nR = 12;
nC = 24;
SCB1 = String Col Box( "", {} );
if(!isempty(TB1),
TB1 << Delete 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>回复:生成可选复选框矩阵@贾斯汀奇尔顿/ @txnelson / @thomasz
我有一个后续问题,想知道你们中是否有人能想到一种方法来做到这一点。 我正在尝试在面板框中生成可选框矩阵。 这是我的脚本,想知道您是否可以指导我为什么失败?
InputsLoadBasic =
Expr(
LB1 = Lineup Box( N Col( 2 ) );
LB1 << Append(Panel Box( "Test",
V List Box(
V List Box(
Text Box( "Arg1" ),
NEB_arg1 = Number Edit Box( 2 ),
Text Box( "Arg2" ),
NEB_arg2 = Number Edit Box( 3 ),
)
)
)
);
LB1 << Append(Panel Box( "Selectable Matrix Test",
V List Box(
Button Box("Enter Target Matrix",
nR = 12;
nC = 24;
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>
生成的 UI 看起来像我想要的,但是,当我单击上面显示的“输入目标矩阵”按钮时,它并没有做我想要的。 你能帮忙吗
回复:生成可选复选框矩阵您可以使用 <
nRow = 5;
nCol = 6;
// string col box for row labels
scb = String Col Box( "", {} );
// add labels to rows
For( i = 1, i <= nRow, i++,
scb << Add Element( "row" || Char( i ) )
);
// create a table box to contain everything
tbl = Table Box( scb );
// add all columns with the given number of rows
For( i = 1, i <= nCol, i++,
Insert Into(
tbl,
Check Box(
Repeat( {" "}, nRow ),
<<SET heading=""></SET>
窗户:

回复:生成可选复选框矩阵@贾斯汀奇尔顿,
我的 1 个后续问题是 - 是否可以在每列的顶部和每行的开头添加文本?
如果是这样,那么有效的方法是什么? 他们每个人都应该被包装在一个文本框中吗?
回复:生成可选复选框矩阵@uday_guntupalli ,
您可以在表格框中使用 CheckBox() 来创建复选框表格。
nRow = 5;
nCol = 6;
// create a table box to contain everything
tbl = Table Box();
// add all columns with the given number of rows
For( i = 1, i <= nCol, i++,
Insert Into( tbl, Check Box( Repeat( {" "}, nRow ) ) )
);
New Window( "Check Box Example",
tbl,
Button Box( "Show results",
// initialize the result
result = {};
// loop through each row
For( i = 1, i <= nRow, i++,
// initialize the row list
result[i] = {};
// loop through each column getting values
For( j = 1, j <= nCol, j++,
result[i][j] = tbl[CheckBoxBox( j )] << get( i )
);
);
// convert the list to a 2-d matrix
result = Matrix( result );
Show( result );
)
);
这是窗口的样子:

这是带有上述选中复选框的日志中的结果:
result =
[ 1 0 0 0 0 0,
0 1 0 0 0 0,
0 0 1 0 0 0,
0 0 0 1 0 0,
0 0 0 0 1 0];
回复:生成可选复选框矩阵@thomasz ,
我认为满足我的需要 - 它看起来不错。 但是,如果可以的话 - 我有几个后续问题:
1. 所选职位是否可检索? - 如果是的话 - 您能否提供一个如何检索该数据的示例?
2. 是否可以在此窗口周围添加更多文字? 更像是 X 轴标签和 Y 轴标签
回复:生成可选复选框矩阵不是一个非常优雅的解决方案,但这样的事情可能会起作用:
lv={};
for(i=1,i<=4,i++, insert into(lv,""));
tCB="";
for(j=1,j<6,j++,tCB||="check box( (lv)),");
tCB=substr(tcB,1,length(tCB)-1);
eval(parse(eval insert("wind=new window( \!"Check boxes\!",
H List Box(
^tCB^))")));