Ho trovato del codice interessante qui Supercharge Your User Interfaces in JSL (US 2018 113) e sto cercando di implementarlo con piccole modifiche come script di tabella (tabella demo allegata).
Gli ultimi ritocchi che voglio applicare sono questi:
- Imposta la dimensione dell'immagine nello script (idealmente, preservando le proporzioni originali.
Ho provato; ad esempio 'one_pic << Imposta dimensione ({200,200})' e 'one_pic << scala (.2)'; in diverse posizioni all'interno della funzione if() a partire dalla riga 43, e ho anche provato questi messaggi in altri posti. Nessun successo. - Non essendo sicuro quando si tratta di utilizzare gli spazi dei nomi e non avendo molta esperienza per quanto riguarda variabili e riferimenti, lo script utilizza 'dt = current data table()' per fare riferimento alla tabella in cui è memorizzato lo script.
È questo l'approccio computazionale giusto o questo è ciò che farebbe uno scripter inesperto?
Grazie dell'aiuto.
@jthi sempre utile. Grazie!
Non sono esattamente sicuro del motivo per cui qui è necessario utilizzare una variabile aggiuntiva (forse altrimenti tenta di ridimensionare l'immagine nella tabella e non può farlo)
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 non utilizzo script di tabella, ma penso che in casi come questo l'utilizzo di Current Data Table() dovrebbe andare bene. In alcuni casi potrebbe fare riferimento alla tabella sbagliata (ad esempio se si cambia tabella immediatamente dopo aver eseguito lo script della tabella) ma molto probabilmente non è un problema qui. Un'altra opzione potrebbe essere quella di eliminare semplicemente dt e current datatable() e usare semplicemente :name, :number, :picture e sperare che lo script table sappia fare riferimento sempre alla tabella corretta (questo potrebbe funzionare meglio che usare current data table() quando hai semplice script di tabella come questo).