如果其默认颜色为“透明”,则无法在运行时更改列颜色

时间:2013-03-15 18:42:58

标签: colors powerbuilder datawindow

当我打开日期窗口进行编辑时,我使用以下代码更改特定列的颜色:

dw_1.object.description.Background.Color = RGB(255, 255, 255)

只要画家中的默认背景颜色不是“透明”,这个效果很好。 如果它开始透明,则此代码不执行任何操作。

如何让列透明,但将其更改为白色然后再将其更改?

谢谢,

2 个答案:

答案 0 :(得分:3)

background.mode属性更改为0以删除透明度并考虑background.color

手册在Background.property DataWindow object property条目中说明:

  

透明背景
  如果Background.Mode是透明的(1),则忽略Background.Color。

答案 1 :(得分:1)

将列背景颜色设置为白色(例如)并将其背景颜色表达式设置为553648127

之后,您可以使用Modify

进行更改
// To white
dw_1.Modify("description.Background.Color='16777215~t16777215'")
// To transparent
dw_1.Modify("description.Background.Color='16777215~t553648127'")

可能需要dw_1.SetRedraw(true)

您也可以创建隐藏列(例如desc_bc),将其名称设置为backcolor的表达式,并更改其值而不是调用Modify。