<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />リスト/コンボボックスを作成するときに列の階層を反映する方法はありますか?
region ==>アジア
国==>中国
まず地域を選択し、次にリストボックスのサブカテゴリで国を選択します
これが 'hierListBox()'関数です。
// ***************************************************** *****************************************
// ian.cox@jmp.com :04Sep2007
//
// 2番目のリストに表示される内容が次のとおりである「階層」リストボックスを作成します。
//最初のリストの現在の選択を条件とします。両方のリストで複数選択
//許可されています。
// ***************************************************** *****************************************
クリアグローバル () ;
hierListBox = 関数 ( { dt 、 c1 、 c2 、 winTitle } 、
// mは、必要なマッピングを作成します。mは、c1の各一意の値を対応するすべての値にマッピングします。
// c2の値
メートル = [ => ] ;
各行について (
k = c1 [ 行 ()] ;
もし ( ! ( メートル << 含む ( k )) 、
メートル [ k ] = {}
) ;
メートル [ k ] = インサート ( メートル [ k ] 、 c2 [ 行 ()] ) ;
) ;
//初期UIを構築する
l1 = c1 << GetValues ;
L2 = c2 << GetValues ;
ポンド1 = リストボックス ( l1 、 lb1Script ( ポンド1 ) ) ;
ポンド2 = リストボックス ( L2 ) ;
nw = 新しい窓 ( winTitle 、
ポンド1 、
ポンド2 、
Hリストボックス ( ボタンボックス ( "OK" 、 OKScript ) 、ボタンボックス ( "キャンセル" 、 nw << ウィンドウを閉じる ) )
) ;
// lb1の選択が行われたとき、または変更されたときに実行されるスクリプト(lb2の内容を更新する)
lb1Script = 経験値 (
slb1 = ポンド1 << GetSelected ;
l2new = {} ;
にとって ( 私 = 1 、私 <= N個のアイテム ( slb1 ) 、私 ++、
に挿入 ( l2new 、メートル [ slb1 [ 私 ]] )
) ;
ポンド2 << 削除する ;
ポンド2 = リストボックス ( l2new ) ;
nw [ ListBoxBox ( 1 )] << SibAppend ( ポンド2 ) ;
) ;
//ユーザーが選択されたとき 。。
OKScript = 経験値 (
nw << ウィンドウを閉じる ;
l1 = ポンド1 << GetSelected ;
L2 = ポンド2 << GetSelected ;
// 2つのリストボックスから選択リストを作成する
l = 評価リスト ( { 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 、 "シティ" ) ;
//地図を作る。。。
l = hierListBox ( dt 、カラム ( "状態" ) 、カラム ( "シティ" ) 、 「条件付き」 ) ;
見せる ( l ) ;
これはあなたに役立つかもしれない例です:

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 ) 、
ボタンボックス ( "OK" 、 doOk () )
)
)
)
) ;
doSelection = 関数 ({} 、
作る = CB << 選択を取得 ;
行 = dt << 行を取得する ( AsColumn ( "メーカー" ) == 作る ) ;
lstModel = カラム ( 「モデル」 )[ 行 ] ;
ポンド << すべて削除する ;
ポンド << 追加 ( lstModel ) ;
dt << 選択を解除 ;
) ;
doOk = 関数 ( {} 、
cbSel = CB << 選択を取得 ;
lbSel = ポンド << 選択を取得 ;
nw << ウィンドウを閉じる ;
見せる ( cbSel 、 lbSel ) ;
) ;