TableBox-Zeilen färbenIch habe ein Tabellenfeld mit Text, aber auch Schaltflächen, und ich möchte es in mehr als einer Farbe einfärben
col1 = {1, 2, 3};
col2 = {1, 2, 3};
col3 = {1, 2, 3};
myPlatform = New Window( "test",
tb = Table Box(
Number Col Box( "a", col1 ),
Number Col Box( "b", col2 ),
Number Col Box( "c", col3 ),
bb = Col Box( "Open Graph" )
)
);
bblist = {};
For( i = 1, i <= 3, i++,
bb_expr = Eval Insert( "\[bblist[i] = buttonbox("ok")]\" );
Eval( Parse( bb_expr ) );
bb << append( bblist[i] );
);
tb << Set Selectable Rows(1);
dt = tb << Make into Data Table( invisible );
rs = dt << Get Rows Where( :a > 1 );
tb << Set Selected Rows( rs );
tb << Set Selected Row Color( "red" );
rs = dt << Get Rows Where( :a == 1 );
tb << Set Selected Rows( rs );
tb << Set Selected Row Color( "green" );Das Problem besteht darin, dass, wenn ich die letzten beiden Zeilen entferne, die letzten beiden Zeilen rot gefärbt werden. Wenn ich jedoch die letzten beiden Zeilen ausführe, wird die rote Farbe entfernt und die obere Zeile grün gefärbt, anstatt die rote Farbe beizubehalten Also
bevor die letzten beiden Zeilen ausgeführt werden:

nach dem Ausführen der letzten 2 Zeilen

Gibt es eine Möglichkeit, die Tabellenbox in mehr als einer Farbe einzufärben? (Ich möchte, dass es sowohl rote als auch grüne Farben hat)
Ich habe auch versucht, mit dem Journal zu arbeiten, bin mir dann aber nicht sicher, wie ich die Schaltflächen hinzufügen soll.
Danke!
MassenanpassungBetreff: TableBox-Zeilen einfärbenSie können das Problem leicht überprüfen, indem Sie Set Script auf einer der Schaltflächen im sich öffnenden Fenster verwenden:

i ist das Argument, wenn es die Zahl sein sollte. Sie könnten den Eval(Parse())-Weg wählen, um das Problem zu beheben:
For( i = 1, i <= 3, i++,
Insert Into(bblist, Eval(Parse("buttonbox(\!"test"||char(i)||"\!",newFunc("||char(i)||"))")));
);Oder Eval(Eval Expr()):
For( i = 1, i <= 3, i++,
Eval(EvalExpr(Insert Into(bblist, buttonbox("test"||char(expr(i)),newFunc(expr(i))))));
);Das Set-Skript soll (zumindest in diesem Fall) so aussehen:

Der „beste“ Weg, dies zu tun, wird höchstwahrscheinlich stark von der Anwendung abhängen.
Betreff: TableBox-Zeilen einfärbenDanke! das hilft sehr
Ich habe noch eine letzte Frage:
Mit diesem Code versuche ich, für jede Schaltfläche einen anderen Wert in der Funktion zu erstellen.
Wenn ich also in diesem Beispiel auf die Schaltfläche 1 klicke, sollte 1 gedruckt werden, wenn ich auf 2 klicke, sollte 2 gedruckt werden und so weiter.
aber aus irgendeinem Grund bleibt der Wert nicht hängen und auf jeder Schaltfläche, auf die ich klicke, steht 4. (4 ist die Zahl von i nach dem Ende der Schleife)
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
Compress File When Saved(1),
New Column("a",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 3])
),
New Column("b",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([2, 2, 3])
),
New Column("c",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([2, 2, 3])
),
invisible
);
newFunc = function({i},
print(i);
);
dt << Select Where(:a > 1);
For(i = 1, i <= N Cols(dt), i++,
Column(dt, i) << Color Cells("Red");
);
dt << Clear Select;
dt << Select Where(:a == 1);
For(i = 1, i <= N Cols(dt), i++,
Column(dt, i) << Color Cells("Green");
);
dt << Clear Select;
rep = dt << get as report;
Close(dt, no save);
nw = New Window("Example",
hlb = h list box()
);
bblist = Expr(col box("Open Graph"));
For( i = 1, i <= 3, i++,
Insert Into(bblist, buttonbox("test"||char(i),newFunc(i)));
);
rep << append(bblist);
hlb << append(rep);
tb = (hlb << XPath("//TableBox"))[1];
tb << Set Scrollable(5,5);Gibt es eine Möglichkeit, das zu beheben?
Betreff: TableBox-Zeilen einfärbenIch bin mir nicht ganz sicher, was da falsch ist (könnte sein, dass Col Box() die Liste nicht als Argument akzeptiert, da es anscheinend durch Kommas getrennte Anzeigefelder benötigt). Aber das könnte eine Möglichkeit sein:
bblist = Expr(col box("Open Graph"));
For( i = 1, i <= 3, i++,
Insert Into(bblist, buttonbox("test"||char(i)));
);
rep << append(bblist);
hlb << append(rep);Betreff: TableBox-Zeilen einfärbenDanke! das hilft sehr!
aber was ist, wenn ich Schaltflächen dynamisch erstellen möchte?
bblist = {};
For( i = 1, i <= 3, i++,
bb_expr = Eval Insert( "\[bblist[i] = buttonbox("test")]\" );
Eval( Parse( bb_expr ) );
bb << append( bblist[i] );
);wenn ich es versuche
rep << append(Col Box("Open Graph", bb));es funktioniert nicht
irgendein Vorschlag?
Betreff: TableBox-Zeilen einfärbenIch hatte ein Skript, in dem ich etwas Ähnliches machen wollte (am Ende gab ich es auf und entschied mich für einen anderen Ansatz für die Anwendung, weil es für meinen Geschmack ohne Grund etwas zu kompliziert wurde).
Ich habe es ein wenig modifiziert und so erhalten Sie das Grundfenster:
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
Compress File When Saved(1),
New Column("a",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 3])
),
New Column("b",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([2, 2, 3])
),
New Column("c",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([2, 2, 3])
),
invisible
);
dt << Select Where(:a > 1);
For(i = 1, i <= N Cols(dt), i++,
Column(dt, i) << Color Cells("Red");
);
dt << Clear Select;
dt << Select Where(:a == 1);
For(i = 1, i <= N Cols(dt), i++,
Column(dt, i) << Color Cells("Green");
);
dt << Clear Select;
rep = dt << get as report;
Close(dt, no save);
nw = New Window("Example",
hlb = h list box()
);
rep << append(Col Box("Open Graph", Button Box("ok"),Button Box("ok"),Button Box("ok")));
hlb << append(rep);
tb = (hlb << XPath("//TableBox"))[1];
tb << Set Scrollable(5,5);Die Idee bestand darin, die Datentabelle einzufärben, sie als Bericht abzurufen, Schaltflächen zu diesem Bericht hinzuzufügen und diese schließlich an ein neues Fenster anzuhängen (und die Größe zu ändern).
Betreff: TableBox-Zeilen einfärbenGibt es eine andere Möglichkeit, dies zu tun, auch wenn Sie dies mit der Tabellenbox nicht tun können? Das Problem ist, dass ich die Schaltflächen auch irgendwie hinzufügen muss