我正在使用Power Builder 10.5,我遇到的问题起初看起来很简单,但无法接近解决方案。 是否可以根据条件对行进行不同的着色?我有一个select语句,它检索多个具有不同状态的行:status A表示行处于活动状态,ERR表示存在错误,F表示已完成,依此类推...... 我需要的是状态为“ERR”的列的颜色为红色,状态为“A”的列的颜色为绿色。所有其他列可能都是白色。
我现在只能完成一半的工作。我在数据窗口中添加了一个虚拟字段,称为“颜色”。对于我在设计视图中编写的所有单元格,背景颜色属性..
IF ( color =1, 65280, 16777215)
现在我转到OK按钮的单击事件,我在那里检索数据......
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,试图给他一个条件),但我只是继续得到“表达式无效”消息。 修改方法对我也没什么帮助,因为我似乎无法使他只使用修改方法将颜色设置为“ERR”状态。
任何建议都会有所帮助。
答案 0 :(得分: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)))
答案 1 :(得分:0)
在对象或波段的数据窗口属性中,转到背景选项卡。 Color属性有一个带有等号(=)的小按钮。单击该表达式并编写表达式以根据列的值导出RGB值。
我在这里写了一篇关于这个东西的文章:PBDJ Article
答案 2 :(得分:0)
您可以在computed属性中使用case语句。像这样:
case( status when 'ERR' then RGB(255,0,0) when 'A' then RGB(0,255,0) else RGB(0,0,0) )