PowerBuilder数据窗口中记录颜色的隔层显示

转载

1. 前言
  在PowerBuilder中数据窗口(DataWindow)技术可以说是PB的核心,以至于Sybase公司甚至为它申请了专利。对数据库中数据的所有操作几乎都是通过DataWindow对象来完成的,数据窗口对象创建的好坏直接影响到应用程序本身的优劣。
  对于许多新接触PowerBuilder的程序员来说,DataWindow控件和DataWindow对象之间的差别常常让人混淆不清。其实,DataWindow控件就是一个类似于CheckBox、CommandButton控件的控件。而DataWindow对象则是用画板创建在PBL库中的对象。DataWindow控件相对于DataWindow对象来说就像是一个容器一样将之包含在控件里。
  在实际使用过程中经常会用到的一些数据窗口的使用技巧。现在我们就说说数据窗口中记录颜色的隔层显示这个大家常用的技巧。
  2. 功能说明
  数据窗口在Retrieve后往往会返回很多条记录,而这些记录中的数据复杂,通常会造成视觉上的不便。因此如果能够使行与行之间用不同的颜色进行区分,例如第一行记录的背景色是浅白色,第二行记录的背景色是浅灰色,第三行又是浅白色,第四行又是浅灰色……依次类推,既能极大地方便使用者,又能让您的应用程序增色不少。同时当使用者点击当前行时,颜色就会变成浅黄色,这样的效果谁都会喜欢。

3. 实现方法
  要想让显示的数据达到上述效果,我们首先应该知道的是这些表现形式应该在数据窗口对象的什么地方体现出来。很显然,数据窗口中的所有数据是在细目带(Detail)中列出的,因此只要在细目带中设置列对象(Column)的某项属性就会影响到它的显示效果。具体实现如下:
  打开数据窗口,选择所有的列(Column)。
  在Properties窗口中翻到Font标签页,单击Background Color属性旁边的一个带有红色图标的小按钮。见图7.1。

image  在Expression表达式一栏中输入(见图7.2):

if(currentrow()=getrow(),#fff0c2,if(mod(getrow(),2)=1, #fffef9 , #f7f7ef))  

image

注:
  表达式中#fff0c2为浅黄色,#fffef9为浅白色,#f7f7ef为浅黄色。

效果展示
  返回预览窗口看看,效果相当不错!见图7.3。

image

 

 

 

5. 相关函数说明
  CurrentRow()与GetRow()函数是数据窗口信息函数。
  1. CurrentRow()
  功能描述:得到数据窗口当前得到输入焦点的行的行号。
  语法:CurrentRow()
  返回值:Long。函数执行成功时返回当前行的行号,无当前行时返回0。
  2. GetRow()
  功能描述:返回数据窗口相应带中的当前行行号。
  语法:GetRow()
  返回值:Long。函数执行成功时返回相应带中当前行的行号,如果数据窗无数据 则返回0,发生错误时返回-1。

posted on 2010-07-09 10:55  枫叶飞舞  阅读(1587)  评论(0编辑  收藏  举报