habe schlecht zeit gehabt. Aber möchte das natürlich niemandem vorenthalten.
Habe nun ein weiteres Dropdown Feld, also insgesamt 4 statt 3.
Der Code im Skriptobjekt sieht dann so aus:
Code: Alles auswählen
function oEnter(Objekt) {
var Pfad = xfa.resolveNode(Objekt.parent.name) ;
Objekt.fontColor = "0,0,0" ;
switch(Objekt.name) {
case "Produkt":
Objekt.clearItems() ;
var Sortiment = Produkte.Details() ;
for (i = 0; i < Sortiment.length; i++) {
Objekt.addItem(Sortiment[i][0]) ;
}
xfa.host.openList(Objekt.somExpression) ;
break ;
case "Variante":
if (Pfad.Produkt.selectedIndex == -1) {
xfa.host.setFocus(Pfad.Produkt)
} else if (Objekt.length == 1) { // Gibt es nur einen Wert,
Objekt.selectedIndex = 0 ; // wird der sofort eingtragen
Objekt.execEvent("exit") // und weitergemacht.
} else {
xfa.host.openList(Objekt.somExpression)
}
break ;
case "Option":
if (Pfad.Variante.selectedIndex == -1) {
xfa.host.setFocus(Pfad.Variante)
} else if (Objekt.length == 1) {
Objekt.selectedIndex = 0 ;
Objekt.execEvent("exit")
} else {
xfa.host.openList(Objekt.somExpression)
}
break ;
case "Modell":
if (Pfad.Option.selectedIndex == -1) {
xfa.host.setFocus(Pfad.Option)
} else if (Objekt.length == 1) {
Objekt.selectedIndex = 0 ;
Objekt.execEvent("exit")
} else {
xfa.host.openList(Objekt.somExpression)
}
break ;
case "Menge":
if (Pfad.Modell.selectedIndex == -1) {
xfa.host.setFocus(Pfad.Modell)
}
}
}
function leere(Objekt) {
var Pfad = xfa.resolveNode(Objekt.parent.name) ;
switch(Objekt.name) { // Ohne »break«, also wird vom Einsprung bis zum Ende alles abgearbeiet.
case "Produkt":
Pfad.Variante.rawValue = "" ;
case "Variante":
Pfad.Option.rawValue = "" ;
case "Option":
Pfad.Modell.rawValue = "" ;
case "Modell":
Pfad.Menge.rawValue = null ;
Pfad.Preis_e.rawValue = null ;
Pfad.Preis_g.rawValue = null ;
}
}
function oExit(Objekt) {
var Pfad = xfa.resolveNode(Objekt.parent.name) ;
var Sortiment = Produkte.Details() ;
switch(Objekt.name) {
case "Produkt":
if (Objekt.rawValue) {
var arr = Sortiment[Objekt.selectedIndex] ;
Pfad.Variante.clearItems() ;
for (i = 1; i < arr.length; i++) {
Pfad.Variante.addItem(arr[i][0]) ;
}
if (!Pfad.Variante.rawValue) {
Pfad.Preis_g.fillColor = Skripte.Palette(2) ;
xfa.host.setFocus(Pfad.Variante) ;
}
}
break ;
case "Variante":
if (Objekt.rawValue) {
var arr = Sortiment[Pfad.Produkt.selectedIndex][Objekt.selectedIndex + 1] ;
Pfad.Option.clearItems() ;
for (i = 1; i < arr.length; i++) {
Pfad.Option.addItem(arr[i][0]); // + ' => ' + Objekt.selectedIndex) ; // »+ "|" + i.toString()« ermöglicht, dass sich der Wert in »arr[i][1]« wiederholen darf.
}
var selectedVariante = Objekt.selectedIndex;
if (!Pfad.Option.rawValue) xfa.host.setFocus(Pfad.Option) ;
}
break ;
case "Option":
if (Objekt.rawValue) {
var arr = Sortiment[Pfad.Produkt.selectedIndex][Pfad.Variante.selectedIndex + 1][Objekt.selectedIndex + 1];
Pfad.Modell.clearItems() ;
for (i = 1; i < arr.length; i++) {
Pfad.Modell.addItem(arr[i][0],arr[i][1]) + "|" + i.toString();// + " => " + Pfad.Produkt.rawValue); // »+ "|" + i.toString()« ermöglicht, dass sich der Wert in »arr[i][1]« wiederholen darf.
}
if (!Pfad.Modell.rawValue) xfa.host.setFocus(Pfad.Modell) ;
}
break ;
case "Modell":
if (Objekt.rawValue) {
Pfad.Preis_e.rawValue = parseFloat(Objekt.rawValue) ;
if (!Pfad.Menge.rawValue) xfa.host.setFocus(Pfad.Menge) ;
}
break ;
case "Menge":
Pfad.Preis_g.rawValue = Objekt.rawValue * Pfad.Preis_e.rawValue ;
Pfad.Preis_g.border.nodes.remove(Pfad.Preis_g.border.fill) ;
if (Objekt.rawValue && Objekt.parent.instanceManager.count == Objekt.parent.index + 1) Objekt.parent.instanceManager.addInstance(1) ;
}
Objekt.execEvent("mouseExit") ;
}