Boucles imbriquées avec des listes déroulantesJ'essaie de construire une matrice 2D avec 2 boucles FOR imbriquées utilisées dans les étiquettes de survol de la souris (Générateur de graphiques -> Éditeur d'étiquettes de survol -> Graphlet).
Je donne ici un exemple simplifié pour une matrice 2*2.
hlb = H List Box();
vlb = V List Box();
For (row=1, row<=2, row++,
For (col=1, col<=2, col++,
hlb << append(Text Box("Row: "|| char(row) ||", Col: "|| char(col) ))
);
vlb << append(hlb);
);
vlb << get picture;Le script ci-dessus génère un résultat erroné :

Pour obtenir le résultat correct, je dois réinitialiser la liste déroulante H. Cependant, si j'ajoute hlb << Set Items({}); comme ci-dessous, le résultat est très similaire à celui ci-dessus (c'est-à-dire pas correct).
hlb = H List Box();
vlb = V List Box();
For (row=1, row<=2, row++,
For (col=1, col<=2, col++,
hlb << append(Text Box("Row: "|| char(row) ||", Col: "|| char(col) ))
);
vlb << append(hlb);
<FONT color="#FF0000">hlb << Set Items({});</FONT>
);
vlb << get picture;J'ai également essayé de supprimer et de recréer la liste H comme indiqué ci-dessous. Cela ne fonctionne pas non plus car cela supprime l'objet de la liste H déjà inséré dans la liste V.
hlb = H List Box();
vlb = V List Box();
For (row=1, row<=2, row++,
For (col=1, col<=2, col++,
hlb << append(Text Box("Row: "|| char(row) ||", Col: "|| char(col) ))
);
vlb << append(hlb);
<FONT color="#FF0000"> hlb << Delete;
hlb = H List Box();</FONT>
);
vlb << get picture;D'autres conseils ? Ma version de JMP est la 16.2
Merci;
Tendon
Personnalisation de masseRe : Boucles imbriquées avec des zones de listeJe me demande si une Line Up Box serait une meilleure approche ?
Re : Boucles imbriquées avec des zones de listeBonjour,
Jim : Merci pour votre solution. Ça marche bien. Je vois maintenant pourquoi mes essais n'ont pas réussi.
Jarmo : Merci pour votre suggestion de solution alternative à utiliser Table Box ou Lineup Box ; très instructif.
Jeanne
Re : Boucles imbriquées avec des zones de listeVous pouvez également utiliser Table Box ou Lineup Box avec N Col :
Names Default To Here(1);
vlb = V List Box();
For(row = 1, row <= 2, row++,
hlb = H List Box();
For(col = 1, col <= 2, col++,
hlb << append(Text Box("Row: " || Char(row) || ", Col: " || Char(col) || " || "))
);
vlb << append(hlb);
);
lb = Lineup Box(N Col(2));
cols = 2;
rows = 2;
For(i = 1, i <= cols * rows, i++,
row = Ceiling(i / 2);
col = !Modulo(i, 2) + 1; //just some calculation which works in this case
Show(col);
lb << append(Text Box("Row: " || Char(row) || ", Col: " || Char(col) || " || "));
);
//one option
tb = Table Box("",
String Col Box("row1", {"Row: 1", "Row: 2"}),
String Col Box("col1", {"Col: 1", "Col: 1"}),
String Col Box("row1", {"Row: 1", "Row: 2"}),
String Col Box("col1", {"Col: 2", "Col: 2"}),
);
New Window("",
Lineup Box(N Col(1),
Text Box("V List Box"),
vlb,
Text Box("Lineup"),
lb,
Text Box("Table Box"),
tb
)
);
Re : Boucles imbriquées avec des zones de listeJe crois que c'est ce que tu veux

vlb = V List Box();
For( row = 1, row <= 2, row++,
hlb = H List Box();
For( col = 1, col <= 2, col++,
hlb << append( Text Box( "Row: " || Char( row ) || ", Col: " || Char( col ) ) )
);
vlb << append( hlb );
);
New Window( "show", vlb << get picture );