콤보 상자 선택에 따른 동적 표시 상자여기에서 도움이 필요한 경우 "옵션 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 : 콤보 상자 선택에 따른 동적 표시 상자문제 및 디버깅 방법 :
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;
)
);Re : 콤보 상자 선택에 따른 동적 표시 상자감사 @jthi
솔루션이 작동합니다!
후속 조치로 언급 한 3 단계 디버깅 단계를 명확히 할 수 있습니까? 나는 그 의견을 잘 이해하지 못한다.
문제 및 디버깅 방법 :
1. 스크립트 실행
2. HB1, HB2의 내용 확인 (DisplayBox [ListBox])
3. 옵션 2로 변경하고 HB1 (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 디버깅 방식을 설명해 주셔서 감사합니다!
로그에서 "Displaybox[]"를 자주 볼 수 있지만 로그의 의미를 제대로 이해하지 못한 것 같습니다. 포인터 주셔서 감사합니다!