前言
在PowerBuilder中数据窗口(DataWindow)技术可以说是PB的核心以至于Sybase公司甚至为它申请了专利对数据库中数据的所有操作几乎都是通过DataWindow对象来完成的数据窗口对象创建的好坏直接影响到应用程序本身的优劣
对于许多新接触PowerBuilder的程序员来说DataWindow控件和DataWindow对象之间的差别常常让人混淆不清其实DataWindow控件就是一个类似于CheckBoxCommandButton控件的控件而DataWindow对象则是用画板创建在PBL库中的对象DataWindow控件相对于DataWindow对象来说就像是一个容器一样将之包含在控件里
实际使用过程中经常会用到的一些数据窗口的使用技巧现在我们就说说数据窗口中记录颜色的隔层显示这个大家常用的技巧
功能说明
数据窗口在Retrieve后往往会返回很多条记录而这些记录中的数据复杂通常会造成视觉上的不便因此如果能够使行与行之间用不同的颜色进行区分例如第一行记录的背景色是浅白色第二行记录的背景色是浅灰色第三行又是浅白色第四行又是浅灰色……依次类推既能极大地方便使用者又能让您的应用程序增色不少同时当使用者点击当前行时颜色就会变成浅黄色这样的效果谁都会喜欢
实现方法
要想让显示的数据达到上述效果我们首先应该知道的是这些表现形式应该在数据窗口对象的什么地方体现出来很显然数据窗口中的所有数据是在细目带(Detail)中列出的因此只要在细目带中设置列对象(Column)的某项属性就会影响到它的显示效果具体实现如下
打开数据窗口选择所有的列(Column)
在Properties窗口中翻到Font标签页单击Background Color属性旁边的一个带有红色图标的小按钮
在Expression表达式一栏中输入
if(currentrow()=getrow()rgb()if(mod(getrow())= &rgb() rgb()))
注表达式中rgb()为浅黄色rgb()为浅白色rgb()为浅黄色
效果展示
返回预览窗口看看效果相当不错
相关函数说明
CurrentRow()与GetRow()函数是数据窗口信息函数
CurrentRow()
功能描述得到数据窗口当前得到输入焦点的行的行号
语法CurrentRow()
返回值Long函数执行成功时返回当前行的行号无当前行时返回
GetRow()
功能描述返回数据窗口相应带中的当前行行号
语法GetRow()
返回值Long函数执行成功时返回相应带中当前行的行号如果数据窗口中无数据则返回发生错误时返回