0

我正在使用 Power Builder 10.5,我遇到的问题起初看起来很简单,但无法接近解决方案。是否可以根据条件对行进行不同的着色?我有一个 select 语句,它检索许多具有不同状态的行:状态 A 表示该行处于活动状态,ERR 表示有问题,F 表示已完成,等等......我需要的是列的颜色状态“ERR”为红色,状态为“A”的列的颜色为绿色。所有其他列可能是白色的。

目前我只能完成一半的工作。我在我的数据窗口中添加了一个虚拟字段,称为“颜色”。对于我在设计视图中编写的所有单元格,背景颜色属性..

IF ( color =1, 65280, 16777215)

现在我转到我的 OK 按钮的 clicked 事件,在那里我检索数据......

dw_1.Retrieve()
FOR ll_=1 to dw_1.RowCount()
ls_status=dw_1.GetItemString(ll_,"status")
IF ls_status='A' THEN
dw_1.SetItem(ll_, 'color', 1)
ELSEIF ls_status='ERR' THEN
??????
END IF
NEXT

带问号的部分是我无法前进的地方。这会突出显示状态为“OK”绿色的所有行,但我似乎无法将错误的行变为红色。我已经尝试在背景颜色属性中操作代码(如果 color=2 则尝试给他一个条件),但我只是不断收到“表达式无效”消息。Modify 方法对我也没有多大帮助,因为我似乎无法让他使用 Modify 方法只对具有“ERR”状态的行进行着色。

任何建议都会有所帮助。

4

3 回答 3

1

您应该在 SQL 语句本身中设置“颜色”列。

SQL之类的

CASE status WHEN 'ERR' THEN 'R' WHEN 'A' THEN 'G' END

然后在数据窗口列的背景颜色的表达式中,您可以放置​​类似

if (color[0] = 'R', RGB(255,0,0), if (color[0] = 'G', RGB(0,255,0), RGB(0,0,0))) 
于 2013-10-04T10:57:58.903 回答
0

In the datawindow properties of the object or band, go to the background tab. The Color property has a little button with an equal sign (=) on it. Click that and write an expression to derive a RGB value based on the value of a column.

I wrote an article about this stuff here: PBDJ Article

于 2013-10-04T11:05:33.473 回答
0

您可以在计算属性中使用 case 语句。像这样的东西:

case( status when 'ERR' then RGB(255,0,0) when 'A' then RGB(0,255,0) else RGB(0,0,0) )
于 2013-10-04T12:27:16.970 回答