obtenir des données de la boîte d'affichage stockées dans un tableau associatifHé,
J'essaie d'avoir un tableau qui contient des informations sous forme de clé et des cases d'affichage en tant que valeurs, mais je n'arrive pas à obtenir leur état correct (pour la case à cocher) par la suite - toutes les cases à cocher renvoient la valeur 0 même si vous appuyez dessus.
Je n'arrive pas à comprendre si cela est dû à un problème de syntaxe ou à quelque chose de plus profond, voici mon 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>Merci,
Ben.
ScriptRe: récupérer les données de la boîte d'affichage stockées dans un tableau associatifIl y a au moins quelque chose qui ne va pas dans la façon dont vous enregistrez les références de la zone de liste déroulante dans DisplayArray. Vous pouvez le voir assez facilement en vérifiant les valeurs de DisplayArray. Les cases à cocher sont considérées comme :
Check Box("")Quand ils devraient être vus comme quelque chose comme ceci :
nw = new window("", cb = checkbox("test")); //<STRONG>cb = DisplayBox[CheckBoxBox]</STRONG>
Vous enregistrez donc une nouvelle case à cocher avec des valeurs vides dans votre DisplayArray, pas une DisplayBox faisant référence à une case à cocher.
Je pense également qu'il pourrait y avoir un moyen plus simple de créer cette fenêtre de sélection de case à cocher que vous ne l'avez actuellement. Pourriez-vous fournir par exemple une image et ce que vous voulez qu'elle fasse ? Par exemple, vous parcourez actuellement chaque ligne de la table de données avec For Each Row(), puis utilisez Associative Array() pour enregistrer les zones d'affichage. Le tableau associatif n'aura qu'une seule valeur par clé, donc si vous avez des valeurs dupliquées sur :Col1, vous n'obtiendrez que la dernière "valeur".
Exemple rapide utilisant la table de données Big Class qui pourrait vous donner quelques idées :
Voir plus...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);
)
);
);