基於組合框選擇的動態顯示框在這裡尋求幫助,我無法使顯示框正常工作,因為當重新選擇“選項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;
)
);



圖形學腳本編寫回复:基於組合框選擇的動態顯示框問題以及如何調試:
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;
)
);回复:基於組合框選擇的動態顯示框謝謝@jthi
解決方案有效!
不過,作為後續措施,您能否闡明您提到的3個調試步驟? 我不太明白那條評論。
問題以及如何調試:
1.運行腳本
2.檢查HB1和HB2的內容(DisplayBox [ListBox])
3.切換到選項2並檢查HB1的內容(DisplayBox [])
回复:基於組合框選擇的動態顯示框當然。希望這會有所幫助:
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感謝您解釋您的調試方法!
我確實經常在日誌中看到“Displaybox[]”,但我想我並沒有真正理解日誌的含義。 謝謝指點!