Ich habe hier interessanten Code gefunden : „Supercharge Your User Interfaces in JSL“ (US 2018 113) und versuche, diesen mit geringfügigen Änderungen als Tabellenskript zu implementieren (Demotabelle im Anhang).
Der letzte Schliff, den ich vornehmen möchte, ist dieser:
- Stellen Sie die Bildgröße im Skript ein (idealerweise unter Beibehaltung des ursprünglichen Seitenverhältnisses).
Ich habe es beispielsweise mit „one_pic << Set Size({200,200})“ und „one_pic << scale (.2)“ an verschiedenen Stellen innerhalb der if()-Funktion ab Zeile 43 versucht und habe diese Meldungen auch an anderen Stellen ausprobiert. Ohne Erfolg. - Da das Skript weder sicher im Umgang mit Namespaces ist noch große Erfahrung mit Variablen und Referenzen hat, verwendet es „dt = current data table()“, um auf die Tabelle zu verweisen, in der das Skript gespeichert ist.
Ist dies der richtige, rechnerische Ansatz oder das, was ein unerfahrener Skriptschreiber tun würde?
Danke fürs Helfen.
@jthi ist immer hilfreich. Danke!
Ich bin nicht ganz sicher, warum hier die Verwendung einer zusätzlichen Variable erforderlich ist (vielleicht versucht es andernfalls, die Größe des Bilds in der Tabelle zu ändern, und schafft es nicht).
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);
);
)
);
Ich verwende im Allgemeinen keine Tabellenskripte, aber ich denke, in solchen Fällen sollte die Verwendung von Current Data Table() kein Problem darstellen. In einigen Fällen kann es auf die falsche Tabelle verweisen (z. B. wenn Sie die Tabelle unmittelbar nach dem Ausführen des Tabellenskripts ändern), aber höchstwahrscheinlich ist dies hier kein Problem. Eine andere Möglichkeit könnte darin bestehen, dt und current datatable() einfach wegzulassen und nur :name, :number, :picture zu verwenden und zu hoffen, dass das Tabellenskript weiß, dass es immer auf die richtige Tabelle verweisen muss (dies funktioniert möglicherweise besser als die Verwendung von current data table(), wenn Sie ein einfaches Tabellenskript wie dieses haben).