Cree un número diferente de cuadros de texto según la variableEstimado JMPer,
Intento crear varios cuadros de texto en una nueva ventana, el número de cuadros de texto es una variable
Luego tengo un cuadro deslizante y necesito configurar el texto para esos cuadros de texto que acabo de crear mientras muevo la barra.
Supongo que un bucle for debería ser la solución, pero no puedo hacerlo.
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
)
)
))
Automatización y secuencias de comandosRe: Crear diferente número de cuadros de texto según la variableGracias lo tengo.
También aprendí que usas eval insert para reemplazar mis funciones long long originales.
Agradezco siempre su amable compartir.
Re: Crear diferente número de cuadros de texto según la variableProporciona una capa de separación adicional (y bastante sencilla) a su secuencia de comandos y es más fácil modificar estos pequeños bloques de código que la nueva ventana masiva (aún no tiene una ventana nueva grande, pero rápidamente pueden volverse muy largas). A veces puede causar algunos problemas al "perder" las referencias, pero creo que aún así vale la pena.
Re: Crear diferente número de cuadros de texto según la variableGracias Jarmo, esto es exactamente lo que necesito.
¿Puedo preguntarle por qué preferiría mover el script para Slider Box fuera del cuadro deslizante?
Re: Crear diferente número de cuadros de texto según la variableAlmacene referencias en la lista, cree el "colector" para cuadros de texto fuera de una nueva ventana y también movería el script para Slider Box fuera del cuadro deslizante a una función/expresión separada.
¿Esto es lo que necesitas?
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;
)
);
);Re: Crear diferente número de cuadros de texto según la variableGracias Jim, pero esto no es lo que necesito, no es necesario reemplazar (colname[1]) [1] para valorar
Lo que necesito es que cuando la lista colname tenga más elementos, por ejemplo: 5, el script pueda hacer:
tb1 =
tb2 =
tb3=
tb4 =
tb5=
cuando tenga 10 elementos, entonces haga tb1 ~ tb10
Re: Crear diferente número de cuadros de texto según la variableNo estoy seguro de que esto sea lo que quieres. Mis modificaciones a su secuencia de comandos cambian los valores de los cuadros de texto en la ventana de visualización, a medida que mueve el control deslizante
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
)
)
)
);