Encontré un código interesante aquí Supercharge Your User Interfaces en JSL (US 2018 113) y estoy tratando de implementarlo con modificaciones menores como un script de tabla (tabla de demostración adjunta).
Los toques finales que quiero aplicar son estos:
- Establezca el tamaño de la imagen en el guión (idealmente, preservando la relación de aspecto original).
He intentado; por ejemplo, 'one_pic << Establecer tamaño({200,200})' y 'one_pic << escala (.2)'; en diferentes posiciones dentro de la función if() comenzando en la línea 43, y también probé estos mensajes en otros lugares. Sin éxito. - Al no tener confianza en el uso de espacios de nombres ni tener mucha experiencia con respecto a variables y referencias, el script usa 'dt = current data table()' para hacer referencia a la tabla en la que está almacenado el script.
¿Es este el enfoque computacional correcto o esto es lo que haría un scripter sin experiencia?
Gracias por ayudar.
@jthi siempre es útil. ¡Gracias!
No estoy exactamente seguro de por qué se requiere usar una variable adicional aquí (tal vez, de lo contrario, intenta cambiar el tamaño de la imagen en la tabla y no puede hacerlo)
Names Default To Here(1);
dt = Current Data Table();
name_list = dt:name << get values;
num_list = dt:number << get values;
pic_list = dt:picture << get values;
nw = New Window("row",
V List Box(
tb = Text Box("some row"),
H List Box(
Panel Box("names & numbers",
V Scroll Box(
tbox = Table Box(String Col Box("Name", name_list), String Col Box("Number", num_list), )
)
),
Panel Box("pics",
pb = picture box()
)
)
)
);
tb << set font style("Italic") << font color("Dark Blue") << set font("Stencil", 16) << set width(450);
tbox << set underline headings(1) << set heading column borders(1) << set column borders(1) <<
set row borders(1) << set shade alternate rows(1) << set selectable rows(1);
tbox << set row change function(Function({this},
row_list = this << get selected rows;
If(N Rows(row_list) > 0,
k = row_list[1];
one_pic = pic_list[k];
pic = one_pic;
pic << Scale(0.2);
pb << set image(pic);
);
)
);
Generalmente no uso scripts de tablas, pero creo que en casos como este usar Current Data Table() debería estar bien. En algunos casos, puede referirse a una tabla incorrecta (como si cambia la tabla inmediatamente después de ejecutar el script de la tabla), pero lo más probable es que no sea un problema aquí. Otra opción podría ser simplemente eliminar dt y la tabla de datos actual() y simplemente usar :nombre, :número, :imagen y esperar que el script de la tabla sepa hacer referencia siempre a la tabla correcta (esto podría funcionar mejor que usar la tabla de datos actual() cuando tienes script de tabla simple como este).