Numero programmabile di più box grafici in una nuova finestraMi scuso se questo ha risposto da qualche altra parte che non sono stato in grado di trovare.
Voglio generare un numero di box grafici separati all'interno di una finestra, in cui posso quindi disegnare forme personalizzate. Dovrebbero esserci colonne X e righe Y, ovvero il numero e il formato devono essere programmabili.
Mi piacerebbe che assomigli un po 'all'immagine allegata. Questo è stato creato con ogni Graph Box scritto per intero, che ovviamente non è l'ideale.
Come semplice punto di partenza, ho provato questo:
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) )
)
)
)
)
)
)
);
Ma ovviamente non ha funzionato. Probabilmente ho bisogno di racchiuderlo in una sorta di espressione di tipo eval (sostitutivo (expr ())), ma il mio JSL è molto arrugginito e non so da dove cominciare!
Qualunque suggerimento sarà ben accolto.
Grazie molto,
Matteo.

Oggetto: numero programmabile di più box grafici in una nuova finestraQualcosa come questo funziona?
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
)
);
Oggetto: numero programmabile di più box grafici in una nuova finestraOttimo, funziona bene! Ora proverò a capire perché funziona.
Grazie molto,
Matteo.
Oggetto: numero programmabile di più box grafici in una nuova finestraMi dispiace per la mia pigrizia tardi. Avrei dovuto metterlo lì dentro. Ecco la mia opinione generale sul perché il tuo non funziona.
JMP rende le espressioni restituiscono le ultime espressioni in un'istruzione glue (che è ciò che fa l'operatore;)
x = 1;
y = 2;
// is the same as
glue(x=1, y=2);
//that's why it returns 2 if you run it.
Per i loop, tuttavia, non restituire l'ultima cosa. Ti basta correre. Ma anche se lo facessero, in una vetrina come HListbox, mostrerebbe solo l'ultima cosa (una singola graphbox). Quando si tratta di displaybox, nella sua costruzione. È possibile inserire istruzioni di colla regolari al suo interno per restituire ciascuna finestra di visualizzazione.
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"));
in pratica, invece di () inserire all'interno del tuo costruttore hlistbox, crearlo con un riferimento e quindi aggiungerlo ad esso (i) nei tuoi loop for.
Con il tuo hlb, creo hlb con ogni iterazione della riga e aggiungo e poi sovrascrivo semplicemente il riferimento perché non ne ho più bisogno.
Spero che ciò renda le cose più chiare e non meno.