基于组合框选择的动态显示框在这里寻求一些帮助,我无法让显示框正常工作,因为当重新选择“选项1”时,它不断变回空白窗口(一些照片供参考)。
非常感谢您的帮助!
names default to here(1);
Buttons = {"Button 1", "Button 2", "Button3"};
Boxes = {"Box 1", "Box 2", "Box 3"};
LB_Input_1 = lineupbox(ncol(2),spacing(5));
for(i=1,i<=nitems(Buttons),i++,
label1 = char(Buttons[i]);
bblabel1 = "clb_" || char(i);
eval(parse(evalinsert("\[LB_Input_1 << append(buttonbox("^label1^", ^bblabel1^ << append(clb2 << get selected)))]\")));
eval(parse(evalinsert("\[LB_Input_1 << append(^bblabel1^ = col list box("Numeric",minitems(1),maxitems(1),nlines(1)))]\")));
);
for(i=1,i<=nitems(Boxes),i++,
label1 = char(Boxes[i]);
neblabel1 = "neb_"||char(i);
eval(parse(evalinsert("\[LB_input_1 << append(Text box("^label1^"))]\")));
eval(parse(evalinsert("\[LB_input_1 << append(^neblabel1^ = Number edit box())]\")));
);
HB1 = hlistbox(
clb2 = filter col selector(dt1,all),
LB_input_1
);
LB_Input_2 = lineupbox(ncol(2),spacing(5));
for(i=1,i<=nitems(Buttons)-1,i++,
label1 = char(Buttons[i]);
bblabel1 = "clb_" || char(i);
eval(parse(evalinsert("\[LB_Input_2 << append(buttonbox("^label1^", ^bblabel1^ << append(clb2 << get selected)))]\")));
eval(parse(evalinsert("\[LB_Input_2 << append(^bblabel1^ = col list box("Numeric",minitems(1),maxitems(1),nlines(1)))]\")));
);
for(i=1,i<=nitems(Boxes)-1,i++,
label1 = char(Boxes[i]);
neblabel1 = "neb_"||char(i);
eval(parse(evalinsert("\[LB_input_2 << append(Text box("^label1^"))]\")));
eval(parse(evalinsert("\[LB_input_2 << append(^neblabel1^ = Number edit box())]\")));
);
HB2 = hlistbox(
clb2 = filter col selector(dt1,all),
LB_input_2
);
dt1 = current data table();
new window("Test",
vb1 = vlistbox(Text box(""),
Panel Box("Selection Option",H list box(text box("Select: "),
combo1 = combobox({"Option 1","Option 2"},
<< set function(function({this,index},
match(index,
1,
vb1 << append (try(view << delete);
view = HB1;
),
2,
vb1 << append (try(view << delete);
view = HB2;
)
)
))
)
)
),
text box (""),
view = HB1;
)
);



消费者和市场研究Re: 基于组合框选择的动态显示框@jthi感谢您解释您的调试方法!
我确实经常在日志中看到“Displaybox[]”,但我想我并没有真正理解日志的含义。 感谢您的指点!
Re: 基于组合框选择的动态显示框当然。希望这有帮助:
1. 打开日志窗口
2.运行脚本->运行良好
3. 将选项从选项 1 更改为选项 2 -> 工作正常
4. 将选项从选项 2 更改为选项 1 -> 显示框消失
5. 将选项从选项 1 更改回选项 2 -> 显示框仍然丢失
此时我开始想知道 HB1 和 HB2 是否有问题,以及当您更改选项时它们是否被删除。
6. 再次运行脚本。 从脚本窗口突出显示 HB1 并运行脚本以将变量信息获取到日志窗口 (DisplayBox[ListBox])
7. 将选项从选项 1 更改为选项 2。从脚本窗口突出显示 HB1 并运行脚本以将变量信息获取到日志窗口 (DisplayBox[])
8.注意ListBox已经消失了

9. 开始找出问题所在以及解决方法
这可能会帮助您弄清楚发生了什么:在某些时候 HB1 和 HB2 H 列表框被删除。
Re: 基于组合框选择的动态显示框谢谢@jthi
该解决方案有效!
不过,作为后续行动,您能否澄清一下您提到的 3 个调试步骤? 我不太明白这个评论。
问题及调试方法:
1.运行脚本
2.检查HB1和HB2的内容(DisplayBox[ListBox])
3. 更改为选项2并检查HB1(DisplayBox[])的内容
Re: 基于组合框选择的动态显示框问题及调试方法:
1.运行脚本
2.检查HB1和HB2的内容(DisplayBox[ListBox])
3. 更改为选项2并检查HB1(DisplayBox[])的内容
快速(和肮脏的修复?)可能会有所帮助。 看看我如何更改 HB1 和 HB2 参考位置并使它们成为表达式:
names default to here(1);
Buttons = {"Button 1", "Button 2", "Button3"};
Boxes = {"Box 1", "Box 2", "Box 3"};
HB1 = Expr(
LB_Input_1 = lineupbox(ncol(2),spacing(5));
for(i=1,i<=nitems(Buttons),i++,
label1 = char(Buttons[i]);
bblabel1 = "clb_" || char(i);
eval(parse(evalinsert("\[LB_Input_1 << append(buttonbox("^label1^", ^bblabel1^ << append(clb2 << get selected)))]\")));
eval(parse(evalinsert("\[LB_Input_1 << append(^bblabel1^ = col list box("Numeric",minitems(1),maxitems(1),nlines(1)))]\")));
);
for(i=1,i<=nitems(Boxes),i++,
label1 = char(Boxes[i]);
neblabel1 = "neb_"||char(i);
eval(parse(evalinsert("\[LB_input_1 << append(Text box("^label1^"))]\")));
eval(parse(evalinsert("\[LB_input_1 << append(^neblabel1^ = Number edit box())]\")));
);
hlistbox(
clb2 = filter col selector(dt1,all),
LB_input_1
);
);
HB2 = Expr(
LB_Input_2 = lineupbox(ncol(2),spacing(5));
for(i=1,i<=nitems(Buttons)-1,i++,
label1 = char(Buttons[i]);
bblabel1 = "clb_" || char(i);
eval(parse(evalinsert("\[LB_Input_2 << append(buttonbox("^label1^", ^bblabel1^ << append(clb2 << get selected)))]\")));
eval(parse(evalinsert("\[LB_Input_2 << append(^bblabel1^ = col list box("Numeric",minitems(1),maxitems(1),nlines(1)))]\")));
);
for(i=1,i<=nitems(Boxes)-1,i++,
label1 = char(Boxes[i]);
neblabel1 = "neb_"||char(i);
eval(parse(evalinsert("\[LB_input_2 << append(Text box("^label1^"))]\")));
eval(parse(evalinsert("\[LB_input_2 << append(^neblabel1^ = Number edit box())]\")));
);
hlistbox(
clb2 = filter col selector(dt1,all),
LB_input_2
);
);
dt1 = current data table();
new window("Test",
vb1 = vlistbox(Text box(""),
Panel Box("Selection Option",H list box(text box("Select: "),
combo1 = combobox({"Option 1","Option 2"},
<< set function(function({this,index},
try(view << delete);
match(index,
1,
vb1 << append (
view = HB1;
),
2,
vb1 << append (
view = HB2;
)
)
))
)
)
),
text box (""),
view = HB1;
)
);