<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 ;
L2 = C2 << 的GetValues ;
LB1 = 列錶框 ( L1 , lb1Script ( LB1 ) ) ;
LB2 = 列錶框 ( L2 ) ;
NW = 新窗戶 ( winTitle ,
LB1 ,
LB2 ,
H列錶框 ( 按鈕框 ( “好” , OKScript ) ,按鈕框 ( “取消” , NW << 關閉窗口 ) )
) ;
//創建或更改lb1中的選擇時執行的腳本(更新lb2的內容)
lb1Script = EXPR (
SLB1 = LB1 << GetSelected ;
l2new = {} ;
對於 ( 一世 = 1 ,一世 <= N項 ( SLB1 ) ,一世 ++,
插入 ( l2new ,米 [ SLB1 [ 一世 ]] )
) ;
LB2 << 刪除 ;
LB2 = 列錶框 ( l2new ) ;
NW [ ListBoxBox ( 1 )] << SibAppend ( LB2 ) ;
) ;
//進行用戶選擇時 。。
OKScript = EXPR (
NW << 關閉窗口 ;
L1 = LB1 << GetSelected ;
L2 = LB2 << GetSelected ;
//從兩個列錶框中選擇一個列表
升 = 評估列表 ( { L1 , L2 } ) ;
) ;
) ;
//表 。。
DT = 新表 ( “測試” ,
添加行 ( 20 ) ,
新欄目 ( “州” ,
字符 ,
公稱 ,
設定值 (
{ “FL” , “FL” , “NC” , “MI” , “AZ” , “MI” , “NC” , “MI” , “AZ” , “FL” , “FL” , “NC” , “FL” , “NC” , “MI” , “FL” , “FL” ,
“MI” , “NC” , “NC” }
)
) ,
新欄目 ( “市” ,
字符 ,
公稱 ,
設定值 (
{ “城市1” , “城市2” , “城市3” , “城市4” , “城市5” , “城市6” , “城市7” , “城市8” , “城市9” , “城市10” ,
“城市11” , “城市12” , “城市13” , “城市14” , “城市15” , “城市16” , “城市17” , “城市18” , “城市19” ,
“城市20” }
)
)
) ;
// 列 。。。
C1 = 柱 ( DT , “州” ) ;
C2 = 柱 ( DT , “市” ) ;
//製作地圖 。。
升 = hierListBox ( DT ,柱 ( “州” ) ,柱 ( “市” ) , “條件” ) ;
節目 ( 升 ) ;
這是一個可能對您有所幫助的示例:

DT = 打開 ( “$ SAMPLE_DATA / Cars 1993.jmp” ) ;
總結 ( lstMake = 通過 ( “製造商” )) ;
插入 ( lstMake , “選擇...” , 1 ) ;
NW = 新窗戶 ( “選擇車型” ,
邊框 ( 最佳 ( 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 << 獲得選擇 ;
lbSel = 磅 << 獲得選擇 ;
NW << 關閉窗口 ;
節目 ( cbSel , lbSel ) ;
) ;