Nombre programmable de plusieurs zones de graphe dans une nouvelle fenêtreToutes mes excuses si cela répond ailleurs que je n'ai pas pu trouver.
Je souhaite générer un certain nombre de zones de graphique distinctes dans une fenêtre, dans lesquelles je peux ensuite dessiner des formes personnalisées. Il doit y avoir X colonnes et Y lignes - c'est-à-dire que le nombre et le format doivent être programmables.
Je voudrais qu'il ressemble un peu à l'image ci-jointe. Ceci a été créé avec chaque zone graphique écrite en entier, ce qui n’est évidemment pas idéal.
Comme simple point de départ, j'ai essayé ceci:
win01 = New Window( "test",
Outline Box( "test",
V List Box(
For( yy = 1, yy <= 5, yy++,
H List Box(
For( xx = 1, xx <= 5, xx++,
aa = xx + 5 * ( yy - 1 );
Graph Box(
framesize( 200, 200 ),
X Scale( 0, 10 ),
Y Scale( 0, 10 ),
X Axis( Inc( 2 ), Minor Ticks( 1 ), Show Major Grid( 1 ), Show Minor Grid( 1 ) ),
Y Axis( Inc( 2 ), Minor Ticks( 1 ), Show Major Grid( 1 ), Show Minor Grid( 1 ) ),
XName( "Die X" ),
YName( "Die Y" ),
Text({1,5}, char(aa) )
)
)
)
)
)
)
);
Mais bien sûr, cela n'a pas fonctionné. J'ai probablement besoin de l'inclure dans une sorte d'expression de type eval (substitute (expr ())), mais mon JSL est très rouillé et je ne sais pas par où commencer!
Toutes les suggestions seraient reçues avec reconnaissance.
Merci beaucoup,
Matthieu.

Re: Nombre programmable de plusieurs boîtes de graphe dans une nouvelle fenêtreEst-ce que quelque chose aimerait ce travail?
Names default to here(1);
vlb = V List Box();
For( yy = 1, yy <= 5, yy++,
vlb << Append(hlb = H List Box());
For( xx = 1, xx <= 5, xx++,
aa = xx + 5 * ( yy - 1 );
Eval(EvalExpr(
hlb << Append(
Graph Box(
framesize( 200, 200 ),
X Scale( 0, 10 ),
Y Scale( 0, 10 ),
X Axis( Inc( 2 ), Minor Ticks( 1 ), Show Major Grid( 1 ), Show Minor Grid( 1 ) ),
Y Axis( Inc( 2 ), Minor Ticks( 1 ), Show Major Grid( 1 ), Show Minor Grid( 1 ) ),
XName( "Die X" ),
YName( "Die Y" ),
Text({1,5}, Expr(char(aa)) )
)
);
));
);
);
win01 = New Window( "test",
Outline Box( "test",
vlb
)
);
Re: Nombre programmable de plusieurs boîtes de graphe dans une nouvelle fenêtreGénial, ça marche bien! Maintenant, je vais essayer de comprendre pourquoi cela fonctionne.
Merci beaucoup,
Matthieu.
Re: Nombre programmable de plusieurs boîtes de graphe dans une nouvelle fenêtreDésolé pour ma paresse tardive. J'aurais dû mettre ça dedans. Voici mon idée générale sur la raison pour laquelle le vôtre ne fonctionne pas.
JMP fait en sorte que les expressions renvoient les dernières expressions dans une instruction glue (c'est ce que fait l'opérateur;)
x = 1;
y = 2;
// is the same as
glue(x=1, y=2);
//that's why it returns 2 if you run it.
Les boucles ne renvoient cependant pas la dernière chose. Ils viennent de courir. Mais même s'ils le faisaient, dans une boîte d'affichage telle que HListbox, il ne montrerait que la dernière chose (une boîte à graphes unique). Lorsque vous travaillez avec des présentoirs, dans sa construction. Vous pouvez y insérer des instructions de collage régulières pour renvoyer chaque zone d'affichage.
new window("Test",
x = 2;
textbox("This won't show up");
textbox("This will show up"), //notice this is a comma. The whole glue will return just this last textbox
hlb = hlistbox(); // this will also show up because nothing is after it even though it's a semicolon
);
// to add to the hlistbox dynamically, append is often used.
wait(2);
hlb << Append(Textbox("Some other box"));
En gros, au lieu de for () dans votre constructeur hlistbox, créez-le avec une référence puis ajoutez-y (les) dans vos boucles for.
Avec votre hlb, je crée hlb à chaque itération de la ligne, puis j'ajoute puis écrase la référence car je n'en ai plus besoin
J'espère que cela rend les choses plus claires et pas moins.