変数に基づいて異なる数のテキスト ボックスを作成するJMPer 様
新しいウィンドウに複数のテキスト ボックスを作成しようとしましたが、テキスト ボックスの数は変数です
次に、スライダー ボックスがあり、バーを移動するときに作成したばかりのテキスト ボックスにテキストを設定する必要があります。
for ループが解決策になるはずだと思いますが、それを実行できません
colname = {"Name", "Height", "Weight"}; //it's a list of column names from previous code, number of items is not fixed
min = 0;
max = 10;
Value = 0;
eval(evalexpr(
nw = New Window( "parameter setting",
Panel Box( "parameter setting",
tb1 = text box(char(colname[1]) || ": " || char(:expr(nameexpr(ascolumn(colname[1])))[1])),
tb2 = text box(char(colname[2]) || ": " || char(:expr(nameexpr(ascolumn(colname[2])))[1])),
tb3 = text box(char(colname[3]) || ": " || char(:expr(nameexpr(ascolumn(colname[3])))[1])),
//.
//.
//.
//.
//.
//.etc
//lines for tb should determined by N itmes(colname)
Valuetb = Text Box( "Value: " || Char( Value )),
sb = Slider Box(
min, max, Value,
Valuetb << set text( "Value: " || Char( Value ));
:Parameter A << set each value(Value);
tb1 << set text(char(colname[1]) || ": " || char(:expr(nameexpr(ascolumn(colname[1])))[1]));
tb2 << set text(char(colname[2]) || ": " || char(:expr(nameexpr(ascolumn(colname[2])))[1]));
tb3 << set text(char(colname[3]) || ": " || char(:expr(nameexpr(ascolumn(colname[3])))[1]))
) // when I move the slider box, values of all columns in colname will be changed, so I do set text for all columns in colname
)
)
))
自動化とスクリプト作成Re: 変数に基づいて異なる数のテキスト ボックスを作成するこれがあなたが望んでいることかどうかはわかりません。スクリプトを変更すると、スライダーを動かすと、表示ウィンドウのテキスト ボックスの値が変更されます。
names default to here(1);
dt = open("$SAMPLE_DATA/big class.jmp");
colname = {"Name", "Height", "Weight"}; //it's a list of column names from previous code, number of items is not fixed
min = 1;
max = 10;
Value = 1;
Eval(
Eval Expr(
nw = New Window( "parameter setting",
Panel Box( "parameter setting",
tb1 = Text Box(
Char( colname[1] ) || ": " || Char( :expr( Name Expr( As Column( colname[1] ) ) )[1] )
),
tb2 = Text Box(
Char( colname[2] ) || ": " || Char( :expr( Name Expr( As Column( colname[2] ) ) )[1] )
),
tb3 = Text Box(
Char( colname[3] ) || ": " || Char( :expr( Name Expr( As Column( colname[3] ) ) )[1] )
),
//.
//.
//.
//.
//.
//.etc
//lines for tb should determined by N itmes(colname)
Valuetb = Text Box( "Value: " || Char( Value ) ),
sb = Slider Box(
min,
max,
Value,
Valuetb << set text( "Value: " || Char( Value ) );
//:Parameter A << set each value( Value );
tb1 << set text(
Char( colname[1] ) || ": " ||char(column( colname[1] )[value] ));
tb2 << set text(
Char( colname[2] ) || ": " ||char(column( colname[2] )[value] ));
tb3 << set text(
Char( colname[3] ) || ": " ||char(column( colname[3] )[value] ));
) // when I move the slider box, values of all columns in colname will be changed, so I do set text for all columns in colname
)
)
)
);Re: 変数に基づいて異なる数のテキスト ボックスを作成するありがとう、ジム、しかしこれは私が必要とするものではないので、(colname[1]) [1] を value に置き換える必要はありません
私が必要とするのは、colname リストにさらに多くの項目が含まれる場合 (例: 5)、スクリプトは次のことを実行できることです。
tb1 =
tb2 =
tb3=
tb4 =
tb5=
項目が 10 個の場合は tb1 ~ tb10 を実行します
Re: 変数に基づいて異なる数のテキスト ボックスを作成するありがとう、ジャーモ、これこそ私が必要としてるものだ
スライダー ボックスのスクリプトをスライダー ボックスの外に移動したい理由を聞いてもいいですか?
Re: 変数に基づいて異なる数のテキスト ボックスを作成するリストへの参照を保存し、新しいウィンドウの外側にテキスト ボックスの「コレクター」を構築します。また、スライダー ボックスの外側のスライダー ボックスのスクリプトを別の関数/式に移動します。
これは必要ですか?
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
colnames = {"name", "height", "weight"}; //it's a list of column names from previous code, number of items is not fixed
min = 0;
max = 10;
Value = 0;
lub = Lineup Box(N Col(1));
tbs = {};
For Each({colname}, colnames,
text_to_add = Eval Insert("^colname^: ^dt[1, colname]^");
lub << Append(tb = Text Box(text_to_add));
Insert into(tbs, tb);
);
If(N Items(tbs) != N Items(colnames),
Throw("!Fatal error");
);
update_tbs = Expr(
For Each({colname, idx}, colnames,
text_to_set = Eval Insert("^colname^: ^dt[1, colname]^");
tbs[idx] << Set Text(text_to_set);
);
);
nw = New Window( "parameter setting",
Panel Box( "parameter setting",
lub,
Valuetb = Text Box( "Value: " || Char( Value )),
sb = Slider Box(
min, max, Value,
Valuetb << set text( "Value: " || Char( Value ));
:age << set each value(Value);
update_tbs;
)
);
);