Abrufen von Daten aus einer Anzeigebox, die in einem assoziativen Array gespeichert istHey,
Ich versuche, ein Array zu haben, das Informationen als Schlüssel und Anzeigefelder als Werte enthält, aber ich kann den korrekten Status (für das Kontrollkästchen) danach anscheinend nicht abrufen - alle Kontrollkästchen geben auch beim Drücken 0 zurück.
Ich kann nicht verstehen, ob dies auf ein Syntaxproblem oder etwas tieferes zurückzuführen ist, hier ist mein Code:
MainDisplayBox = V List Box();
DisplayArray = Associative Array();
current data table(dt);
For Each Row(
DisplayArray[char(:Col1)] = list(checkbox(""),hlist box(
text box(char(:Col1)||": suggested value: "),
Text Edit Box(round(:Col2,3)),
));
MainDisplayBox << append(hlistbox(eval((DisplayArray[Col1][1])),eval((DisplayArray[Col1][2]))));
);
OffsetCloseButton = Button Box("close",OffsetWindow<<CLOSE window=""></CLOSE>Vielen Dank,
Ben.
SkriptingRe: Abrufen von Daten aus einer Anzeigebox, die in einem assoziativen Array gespeichert istZumindest beim Speichern von Kombinationsfeldverweisen auf DisplayArray stimmt etwas nicht. Sie können es ziemlich einfach sehen, indem Sie die Werte überprüfen, die DisplayArray hat. Kontrollkästchen werden wie folgt angezeigt:
Check Box("")Wenn sie so zu sehen sind:
nw = new window("", cb = checkbox("test")); //<STRONG>cb = DisplayBox[CheckBoxBox]</STRONG>
Sie speichern also ein neues Kontrollkästchen mit leeren Werten in Ihrem DisplayArray, kein DisplayBox, das auf ein Kontrollkästchen verweist.
Ich denke auch, dass es einfacher sein könnte, dieses Kontrollkästchenauswahlfenster zu erstellen, als Sie es derzeit haben. Könnten Sie zum Beispiel ein Bild zur Verfügung stellen und was soll es tun? Beispielsweise durchlaufen Sie derzeit jede Zeile in der Datentabelle mit For Each Row() und verwenden dann Assoziatives Array(), um die Anzeigefelder zu speichern. Assoziatives Array hat nur einen Wert pro Schlüssel. Wenn Sie also auf :Col1 doppelte Werte haben, erhalten Sie nur den letzten "Wert".
Kurzes Beispiel mit Big Class-Datentabelle, das Ihnen einige Ideen geben könnte:
Mehr sehen...Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
keys = Associative Array(dt:name) << get keys;
collection = Associative Array();
vlb = V List Box();
For(i = 1, i <= N Items(keys), i++,
collection[keys[i]] = {};
hlbTemp = H List Box(
collection[keys[i]][1] = Check Box(""),
Text Box(keys[i] || ": suggested value"),
collection[keys[i]][2] = Text Edit Box(dt:height[i])
);
vlb << Append(hlbTemp);
);
//show(collection);
nw = New window("UI", << modal,
v list box(
vlb,
Button Box("OK",
For(i = 1, i <= N Items(keys), i++,
If(collection[keys[i]][1] << get == 1,
Insert Into(pressed, keys[i])
);
);
show(pressed);
)
);
);