新しいウィンドウにプログラム可能な数の複数のグラフボックス謝罪これがどこかに答えたら私が見つけることができなかった。
ウィンドウ内にいくつかの独立したグラフボックスを作成したいのですが、それらを使ってカスタム図形を描画することができます。X列とY行があるはずです - つまり、数とフォーマットはプログラム可能でなければなりません。
添付画像のように見せてください。これは各グラフボックスを完全に書き出して作成されたもので、明らかに理想的ではありません。
簡単な出発点として、私はこれを試しました:
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) )
)
)
)
)
)
)
);
しかし、もちろんそれはうまくいきませんでした。これをある種のeval(replacement(expr()))型の式で囲む必要があるかもしれませんが、私のJSLは非常に錆びていて、どこから始めればいいのかわかりません。
どんな提案でも感謝して受け取られるでしょう。
どうもありがとう、
マシュー。

再:新しいウィンドウに複数のグラフボックスをプログラム可能な数このようなものは動作しますか?
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
)
);
再:新しいウィンドウに複数のグラフボックスをプログラム可能な数素晴らしい、それはうまくいった!今、私はそれがうまくいく理由を試してみます。
どうもありがとう、
マシュー。
再:新しいウィンドウに複数のグラフボックスをプログラム可能な数私の遅い怠惰ですみません。 そこにそれを入れておくべきだった。 これがあなたのがうまくいかない理由についての私の一般的なことです。
JMPは式がグルーステートメントの最後の式を返すようにします(これは;演算子が行うことです)
x = 1;
y = 2;
// is the same as
glue(x=1, y=2);
//that's why it returns 2 if you run it.
しかしforループは最後のものを返しません。 走ったばかりです。 しかし、そうしたとしても、HListboxのようなディスプレイボックスでは、最後のもの(単一のグラフボックス)しか表示されません。 ディスプレイボックスを扱うときは、その構造の中で。 各表示ボックスを返すために、その中に通常の接着ステートメントを入れることができます。
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"));
基本的には、hlistboxのコンストラクタ内でfor()する代わりに、それを参照で作成してからforループで追加します。
あなたのhlbを使って、行を繰り返すたびにhlbを作成して追加してから、参照を上書きするだけです。
これが物事をよりはっきりさせ、それ以上にならないように願っています。