使数据窗口中的被选中行具有更好的外观

本文介绍如何通过修改PowerBuilder数据窗口中选中行的颜色来提升应用美观度,包括单行选择和多行选择的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家都知道,在选择数据窗口中的某一行时,如果使用pb提供的选择函数SelectRow(),那么的外观真是不能恭维,单调而古板的蓝色背景,可能和您的漂亮而生动的应用程序格格不入。有没有办法改变呢?当然有啰,请听我慢慢道来。
   改变某一行的背景比较简单,改变每一列的背景属性(backgroundcolor)即可,可要根据鼠标选择情况自动改变,并可以返回被选中的行可能还需要一定的技巧。下面分单行选择和多行选择分辨说明。
单行选择
  单行选择比较简单,我们只要将所有字段的背景色的表达式改为:


if(GetRow()=CurrentRow(),RGB(255,126,0),RGB(0,0,0))

  其中第一个颜色为被选中的颜色,第二个颜色未被选中的颜色。然后用GetRow()代替GetSelectedRow()函数来得到被选中的行。

多行选择

  多行选择比较复杂,如果单纯依靠改变数据窗口的属性没法实现,我们必须使用数据窗口属性和代码结合起来才能实现

  首先,改变数据窗口的SQL语句,增加一个计算字段:0 as flag,Select 语句改为:


Select col1,col2 ,1 as flag from tablename where .....,

  当返回数据窗口painter时,您就会发现多了一个字段flag,我们就是利用这个字段保存行被选中的信息。

  其次,修改各个字段的背景颜色属性,设置为:if(flag=1,RGB(255,126,0),RGB(255,255,255))

  第三:在数据窗口控件中,增加对clicked 事件的处理,代码如下:


if row<1 then return // setredraw(false)
if this.o b j e c t.flag[row]=1 then //如果该行被选中,撤销选择,否则选中该行
 this.Object.flag[row]=0
else
 this.Object.flag[row]=1
end if
setredraw(true)

您还可以定制本选中行的字体,文本属性等等。原理相同,不再赘述。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值