<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />목록 / 콤보 상자를 만들 때 열의 계층 구조를 반영하는 방법이 있습니까?
지역 ==> 아시아
나라 ==> 중국
먼저 지역을 선택한 다음 목록 상자의 하위 카테고리에서 국가를 선택하십시오.
다음은 'hierListBox ()'함수입니다.
// ************************************************* *******************************************
// ian.cox@jmp.com : 04Sep2007
//
// 두 번째 목록에 표시되는 내용이 "계층 적"ListBox가됩니다.
// 첫 번째 목록의 현재 선택 항목에 대한 조건부입니다. 두 목록에서 여러 선택
// 허용됩니다.
// ************************************************* *******************************************
전역 삭제 () ;
hierListBox = 기능 ( { dt , C1 , c2 , winTitle } ,
// 필수 매핑 만들기 : m은 c1의 각 고유 값을 모든 해당 매핑에 매핑합니다.
// c2의 값
엠 = [ => ] ;
각 행에 대해 (
케이 = C1 [ 열 ()] ;
만약 ( ! ( 엠 << 내용 ( 케이 )) ,
엠 [ 케이 ] = {}
) ;
엠 [ 케이 ] = 끼워 넣다 ( 엠 [ 케이 ] , c2 [ 열 ()] ) ;
) ;
// 초기 UI 작성
l1 = C1 << GetValues ;
12 = c2 << GetValues ;
파운드 1 = 리스트 박스 ( l1 , lb1Script ( 파운드 1 ) ) ;
파운드 2 = 리스트 박스 ( 12 ) ;
북아 일 = 새창 ( winTitle ,
파운드 1 ,
파운드 2 ,
H리스트 박스 ( 단추 상자 ( "승인" , OKScript ) , 단추 상자 ( "취소" , 북아 일 << CloseWindow ) )
) ;
// lb1에서 선택이 수행되거나 변경 될 때 실행되는 스크립트 (lb2의 내용을 업데이트 함)
lb1Script = Expr (
slb1 = 파운드 1 << GetSelected ;
12 새 = {} ;
에 대한 ( 나는 = 1 , 나는 <= N 개 항목 ( slb1 ) , 나는 ++,
에 집어 넣다 ( 12 새 , 엠 [ slb1 [ 나는 ]] )
) ;
파운드 2 << 지우다 ;
파운드 2 = 리스트 박스 ( 12 새 ) ;
북아 일 [ ListBoxBox ( 1 )] << SibAppend ( 파운드 2 ) ;
) ;
// 사용자가 선택되었을 때. . .
OKScript = Expr (
북아 일 << CloseWindow ;
l1 = 파운드 1 << GetSelected ;
12 = 파운드 2 << GetSelected ;
// 두 목록 상자에서 선택 목록 만들기
엘 = 평가 목록 ( { l1 , 12 } ) ;
) ;
) ;
// 표. . .
dt = 새 테이블 ( "테스트" ,
행 추가 ( 20 ) ,
새 열 ( "상태" ,
캐릭터 ,
명사 같은 ,
값 설정 (
{ "플로리다" , "플로리다" , "노스 캐롤라이나" , "미" , "AZ" , "미" , "노스 캐롤라이나" , "미" , "AZ" , "플로리다" , "플로리다" , "노스 캐롤라이나" , "플로리다" , "노스 캐롤라이나" , "미" , "플로리다" , "플로리다" ,
"미" , "노스 캐롤라이나" , "노스 캐롤라이나" }
)
) ,
새 열 ( "시티" ,
캐릭터 ,
명사 같은 ,
값 설정 (
{ "도시 1" , "도시 2" , "도시 3" , "City 4" , "도시 5" , "도시 6" , "도시 7" , "시 8" , "시 9" , "City 10" ,
"City 11" , "도시 12" , "City 13" , "시 14" , "City 15" , "도시 16" , "시 17" , "시 18" , "시 19" ,
"시 20" }
)
)
) ;
// Columns. . .
C1 = 기둥 ( dt , "상태" ) ;
c2 = 기둥 ( dt , "시티" ) ;
//지도 만들기. . .
엘 = hierListBox ( dt , 기둥 ( "상태" ) , 기둥 ( "시티" ) , "가정 어구" ) ;
보여 주다 ( 엘 ) ;
다음은 도움이 될만한 예입니다.

dt = 열다 ( "$ SAMPLE_DATA / Cars 1993.jmp" ) ;
요약하다 ( lstMake = 으로 ( "제조업체" )) ;
에 집어 넣다 ( lstMake , "고르다..." , 1 ) ;
북아 일 = 새창 ( "자동차 유형 선택" ,
국경 상자 ( 상단 ( 10 ) , 왼쪽 ( 20 ) , 권리 ( 20 ) ,
라인업 박스 ( NCol ( 1 ) ,
CB = 콤보 박스 ( lstMake , << 스크립트 ( doSelection () ) ) ,
파운드 = 리스트 박스 ( {} , 폭 ( 100 ) , NLines ( 6 ) ) ,
국경 상자 ( 왼쪽 ( 120 ) , 상단 ( 4 ) , 바닥 ( 4 ) , 권리 ( 4 ) ,
단추 상자 ( "승인" , doOk () )
)
)
)
) ;
doSelection = 기능 ({} ,
하다 = CB << 선택 받기 ;
행 = dt << 어디에서든 행 가져 오기 ( AsColumn ( "제조업체" ) == 하다 ) ;
lstModel = 기둥 ( "모델" ) [ 행 ] ;
파운드 << 모두 제거 ;
파운드 << 추가 ( lstModel ) ;
dt << 선택 지우기 ;
) ;
doOk = 기능 ( {} ,
cbSel = CB << 선택 받기 ;
파운드 셀 = 파운드 << 선택 받기 ;
북아 일 << 창 닫기 ;
보여 주다 ( cbSel , 파운드 셀 ) ;
) ;