行狀態選擇和顏色好吧,我已經嘗試了各種方法來嘗試讓它工作,但到目前為止我所得到的只是一個功能上不太可用的腳本。 刪除腳本工作得很好,但是雖然行狀態腳本工作正常,但它並不完全按照我想要的方式工作,我希望有一種方法可以稍微清理它。
dt << New Column ( "Row State 1",
Row State,
Set Formula ( If( :Alarm ID == "'00000D06", Color State(70))),
);
dt << New Column ( "Row State 2",
Row State,
Set Formula ( If( :Alarm ID == ("'000000B2"| "'000000BE"| "'0000013C"| "'0000013D"),
Color State(6))),
);
dt << New Column ( "Row State 3",
Row State,
Set Formula ( If( :Alarm ID == ("'0000000E"| "'00000144"| "'0000000A"| "'00000021"|
"'00000025"| "'00000027"| "'000000E9"| "'00000145"| "'000001E1"| "'00000F7C"),
Color State(1))),
);
dt << New Column ( "Row State 4",
Row State,
Set Formula ( If( :Alarm ID == "'00000E6E", Color State(38))),
);
dt << New Column ( "Row State 5",
Row State,
Set Formula ( If( :Alarm ID == ("'00000D3B"| "'00000230"| "'00000D42"), Color State(73))),
);
dt << New Column ( "Row State 6",
Row State,
Set Formula ( If( :Alarm ID == ("'0000003B"| "'00000072"| "'00000E8C"), Color State(37))),
);
dt << New Column ( "Row State 7",
Row State,
Set Formula ( If( :Alarm ID == "'00000DB6", Color State(78))),
);
dt << New Column ( "Row State 8",
Row State,
Set Formula ( If( :Alarm ID == "'00000E99", Color State(75))),
);
dt << New Column ( "Row State 9",
Row State,
Set Formula ( If( :Alarm ID == ("'00000E68"| "'00000E71"| "'00000E72"| "'00000E9A"),
Color State(72))),
);
dt << New Column ( "Row State 10",
Row State,
Set Formula ( If( :Alarm ID == ("'0000004E"| "'0000005C"| "'0000011C"| "'00000143"|
"'00000148"| "'000001D9"| "'00000DE9"| "'00000E41"), Color State(12))),
);
dt << New Column ( "Row State 11",
Row State,
Set Formula ( If( :Alarm ID == "'00000D2F", Color State(19))),
);
dt << New Column ( "Row State 12",
Row State,
Set Formula ( If( :Alarm ID == "'00000D2D", Color State(28))),
);
基本上,選擇在“警報 ID”列中包含特定值的行,並將行狀態設置為所選顏色。 我想要它做的是設置行狀態並突出顯示行狀態的顏色,大概我可以在設置所有行狀態後通過附加來做到這一點。
它的作用是,它創建一個行狀態但不應用它,我必須手動應用它,它還為每一行創建一個單獨的行狀態,這很快就會變得混亂,我懷疑我可以使用 else 來至少刪除不存在的行,這會有幫助。 看起來具有多個選項的行實際上並沒有工作,我希望我能讓它工作,這樣我就不必為每個代碼製作 1 行。
希望有人能幫助我,當我有時間的時候仍然會繼續努力,謝謝!
回复:行狀態選擇和顏色這個效果很好,謝謝! 這個系統的優點之一(有時是詛咒)是有多種不同的方法來解決同一問題。 下一個將非常具有挑戰性,我可能會在下週嘗試解決它,哈哈(或者它可能非常簡單,我只是還不知道!)回复:行狀態選擇和顏色我認為這對你有用。這假設您還沒有顏色狀態並且沒有任何項目重疊。
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
color_aa = associative array(
{
// list of values are the first item, color state is the second in each list.
{{12, 13, 16}, 3},
{{14, 15}, 4},
{{17}, 5}
}
);
dt << Select Rows([1, 5, 9]);
rs = dt << Get Row States;
for(values = color_aa << First, !isempty(values), values = color_aa << Next(values),
rows = dt << Get Rows Where(Contains(values, :age));
color = color_aa[values];
rs[rows] = rs[rows] + 2^8*color;
);
dt << Set Row States(rs);
回复:行狀態選擇和顏色如果您想根據您的選擇更改每行的顏色狀態,以下部分腳本適用於您要用於進行更改的結構
Names Default To Here( 1 );
dt = Current Data Table();
For( i = 1, i <= N Rows( dt ), i++,
If(
N Rows( Loc( {"'00000D06"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 70 ),
N Rows( Loc( {"'000000B2", "'000000BE", "'0000013C", "'0000013D"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 6 ),
N Rows(
Loc(
{"'0000000E", "'00000144", "'0000000A", "'00000021", "'00000025", "'00000027", "'000000E9", "'00000145", "'000001E1", "'00000F7C"},
:Alarm ID[i]
)
) > 0, Row State( i ) = Color State( 1 ),
N Rows( Loc( {"'00000E6E"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 38 ),
N Rows( Loc( {"'00000D3B", "'00000230", "'00000D42"}, :Alarm ID[i] ) ) > 0, Row State( i ) = Color State( 73 )
)
);回复:行狀態選擇和顏色顯然我也無法讓我的公式發揮作用^.^
簡而言之,我希望 X 值突出顯示一種顏色的行
Y 和 Z 值的行突出顯示另一種顏色
ETC...
特定的顏色已經在腳本中,顯然是 |或者爭論是選擇這些的問題,我只是不確定表達它的正確方式。
回复:行狀態選擇和顏色我可能沒有正確理解你的問題。但這是我的最佳猜測。首先,我從來沒有打算讓你的公式發揮作用。 你不能做 "something" == ("stuff"|"something") 並讓它評估為真。至少據我所知。我舉了一個我認為你正在嘗試做的例子,但我可能離你很遠。
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
// this doesn't work
dt << New Column("Test", formula(:age == (12 | 14 | 16)));
//this should
values = {12, 14, 16};
rows = dt << Get Rows Where(Contains(values, :age));
//assuming they don't have color
dt << Select Rows([1, 5, 9]);
wait(1);
rs = dt << Get Row States;
//2^8*3 = color state(3) = red
rs[rows] = rs[rows] + 2^8*3;
dt << Set Row States(rs);