<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Gibt es eine Möglichkeit, die Hierarchie der Spalten zu berücksichtigen, wenn Sie das Listen- / Kombinationsfeld erstellen?
region ==> Asien
land ==> china
Wählen Sie zuerst die Region und anschließend das Land in der Unterkategorie im Listenfeld aus
Hier ist eine Funktion 'hierListBox ()':
// *********************************************** *********************************************
// ian.cox@jmp.com : 04Sept2007
//
// Erzeugt eine "hierarchische" ListBox, deren Inhalt für die zweite Liste angezeigt wird
// abhängig von der aktuellen Auswahl in der ersten Liste. Mehrfachauswahl in beiden Listen
// sind erlaubt.
// *********************************************** *********************************************
Globale löschen () ;
hierListBox = Funktion ( { dt . c1 . c2 . winTitle } .
// Machen Sie das erforderliche Mapping: m ordnet jeden eindeutigen Wert in c1 allen entsprechenden Werten zu
// Werte in c2
m = [ => ] ;
Für jede Reihe (
k = c1 [ Reihe ()] ;
Ob ( ! ( m << Enthält ( k )) .
m [ k ] = {}
) ;
m [ k ] = Einfügen ( m [ k ] . c2 [ Reihe ()] ) ;
) ;
// Erstelle die erste Benutzeroberfläche
l1 = c1 << GetValues ;
l2 = c2 << GetValues ;
lb1 = Listenfeld ( l1 . lb1Script ( lb1 ) ) ;
lb2 = Listenfeld ( l2 ) ;
nw = Neues Fenster ( winTitle .
lb1 .
lb2 .
H Listenfeld ( Button Box ( "OK" . OKScript ) . Button Box ( "Stornieren" . nw << Fenster schließen ) )
) ;
// Skript, das ausgeführt wird, wenn die Auswahl in lb1 getroffen oder geändert wird (aktualisiert den Inhalt von lb2)
lb1Script = Ausdruck (
slb1 = lb1 << GetSelected ;
l2neu = {} ;
Zum ( ich = 1 . ich <= N Artikel ( slb1 ) . ich ++
Einfügen in ( l2neu . m [ slb1 [ ich ]] )
) ;
lb2 << Löschen ;
lb2 = Listenfeld ( l2neu ) ;
nw [ ListBoxBox ( 1 )] << SibAppend ( lb2 ) ;
) ;
// Wenn die Benutzerauswahl getroffen wird. . .
OKScript = Ausdruck (
nw << Fenster schließen ;
l1 = lb1 << GetSelected ;
l2 = lb2 << GetSelected ;
// Erstellen Sie eine Liste der Auswahlen aus den beiden Listenfeldern
l = Bewertungsliste ( { l1 . l2 } ) ;
) ;
) ;
// Tabelle . . .
dt = Neue Tabelle ( "Prüfung" .
Zeilen hinzufügen ( 20 ) .
Neue Spalte ( "Zustand" .
Charakter .
Nominal .
Werte setzen (
{ "FL" . "FL" . "NC" . "MI" . "AZ" . "MI" . "NC" . "MI" . "AZ" . "FL" . "FL" . "NC" . "FL" . "NC" . "MI" . "FL" . "FL" .
"MI" . "NC" . "NC" }
)
) .
Neue Spalte ( "Stadt" .
Charakter .
Nominal .
Werte setzen (
{ "Stadt 1" . "Stadt 2" . "Stadt 3" . "Stadt 4" . "Stadt 5" . "Stadt 6" . "Stadt 7" . "Stadt 8" . "Stadt 9" . "Stadt 10" .
"Stadt 11" . "Stadt 12" . "Stadt 13" . "Stadt 14" . "Stadt 15" . "Stadt 16" . "Stadt 17" . "Stadt 18" . "Stadt 19" .
"Stadt 20" }
)
)
) ;
// Säulen . . .
c1 = Säule ( dt . "Zustand" ) ;
c2 = Säule ( dt . "Stadt" ) ;
// Karte erstellen . .
l = hierListBox ( dt . Säule ( "Zustand" ) . Säule ( "Stadt" ) . "Bedingt" ) ;
Show ( l ) ;
Hier ist ein Beispiel, das Ihnen helfen könnte:

dt = Öffnen ( "$ SAMPLE_DATA / Cars 1993.jmp" ) ;
Zusammenfassen ( lstMake = Durch ( "Hersteller" )) ;
Einfügen in ( lstMake . "Wählen..." . 1 ) ;
nw = Neues Fenster ( "Fahrzeugtyp auswählen" .
Rahmenfeld ( oben ( 10 ) . Links ( 20 ) . Recht ( 20 ) .
Aufstellungsbox ( NCol ( 1 ) .
cb = Kombinationsfeld ( lstMake . << Skript ( doSelection () ) ) .
Pfund = Listenfeld ( {} . Breite ( 100 ) . NLines ( 6 ) ) .
Rahmenfeld ( Links ( 120 ) . oben ( 4 ) . Unterseite ( 4 ) . Recht ( 4 ) .
Button Box ( "OK" . doOk () )
)
)
)
) ;
doSelection = Funktion ({} .
machen = cb << Ausgewählt bekommen ;
Reihen = dt << Holen Sie sich die Zeilen wo ( AsColumn ( "Hersteller" ) == machen ) ;
lstModel = Säule ( "Modell" ) [ Reihen ] ;
Pfund << Alles entfernen ;
Pfund << Anhängen ( lstModel ) ;
dt << Auswahl löschen ;
) ;
doOk = Funktion ( {} .
cbSel = cb << Ausgewählt bekommen ;
lbSel = Pfund << Ausgewählt bekommen ;
nw << Fenster schließen ;
Show ( cbSel . lbSel ) ;
) ;