访问数据窗口中的数据可以通过两种方式,一是数据窗口的函数,一是通过表达式。
下面先熟悉一下数据窗口常用的函数。
| 函数名称 | ||
| GetItemDate | 语法 | dw.getitemdate(row,column,[dwbuffer,originalvalue]) |
| 功能 | 获取数据窗口控件对象指定缓冲区中的date型数据 | |
| 参数说明 | dw 数据窗口控件的名称 | |
| row long类型,为行的位置 | ||
| column long类型,为列的位置 | ||
| dwbuffer 取值为primary! delete! filter! 为指定的数据缓冲区 | ||
| originalvalue boolean类型,true为取原始值(默认) | ||
| getitemstatus | 语法 | dw.getitemstatus(row,column,dwbuffer) |
| 功能 | 报告某行或一行内某列的修改状态 | |
| 参数说明 | dw 数据窗口控件的名称 | |
| row long类型,为行的位置 | ||
| column long类型,为列的位置 | ||
| dwbuffer 取值为primary! delete! filter! 为指定的数据缓冲区 | ||
| 返回值 | new! newmodified! notmodified! datamodified! | |
| currentrow | 语法 | dw.currentrow() |
| 功能 | 得到数据窗口控件当前行的行号 | |
| deleterow | 语法 | dw.deleterow() |
| 功能 | 删除主缓冲区中的指定行 | |
| describe | 语法 | dw.describe(properltlist) |
| 功能 | 得到数据窗口对象中当前对象内部的对象属性值 | |
| 返回值 | string类型 | |
| find | 语法 | dw.find(expression,start,end) |
| 功能 | 在数据窗口对象的缓冲区中按照简单的查询要求查询数据 | |
| 返回值 | 行号 | |
| getrow | 语法 | dw.getrow() |
| 功能 | 主数据缓冲区中当前行的行号 | |
| 返回值 | long类型,0表示没有选中当前行,-1表示失败 | |
| getclickedrow | 语法 | dw.getclickedrow() |
| 功能 | 数据窗口控件中用户单击或双击的行的行号 | |
| 返回值 | long类型,如果用户没有单击某行,返回值为0 | |
| getcolumn | 语法 | dw.getcolumn() |
| 功能 | 获取数据窗口控件中当前列的列号 | |
| 返回值 | integer类型,没有当前列则返回0,出错返回-1 | |
| insertrow | 语法 | dw.insertrow(row) |
| 功能 | 在数据窗口中插入一行。有缺省值的列则用其缺省值填充 | |
| 返回值 | 成功时返回新增的行号,出错返回-1 | |
| isselect | 语法 | dw.isselected(row) |
| 功能 | 确定数据窗口中某行是否被选中 | |
| 返回值 | boolean类型,选中则返回true,否则返回false,参数row无效时返回false | |
| pagecount | 语法 | dw.pagecount() |
| 功能 | 返回数据窗口控件中文档中的总页数 | |
| 返回值 | integer类型,若不包含文本则返回1,出错则返回-1 | |
| reset | 语法 | dw.reset() |
| 功能 | 清除控件中的所有数据(不影响与之相关的数据表) | |
| 返回值 | integer类型,成功则返回1,失败返回值为-1 | |
| setrow | 语法 | dw.setrow(row) |
| 功能 | 将当前行设置为某个给定的行号 | |
| 返回值 | integer类型,成功返回1,失败返回-1,参数row无效则返回-1 | |
| scrolltorow | 语法 | dw.scrolltorow(row) |
| 功能 | 改变当前行,但不改变当前列 | |
| 返回值 | integer类型,成功返回1,失败返回-1 | |
| setitem | 语法 | dw.setitem(row,column,value) |
| 功能 | 把数据窗口控件中的某行某列设置为指定值 | |
| 返回值 | integer类型,成功返回1,失败返回-1 | |
| sort | 语法 | dw.sort() |
| 功能 | 用当前排序准则对数据窗口排序。(用setsort函数设置排序准则) | |
| 返回值 | integer类型,成功返回1,失败返回-1 | |
| filter | 语法 | dw.filter() |
| 功能 | 显示数据窗口中通过当前过滤准则的行。(用setfilter设置过滤准则) | |
| 返回值 | integer类型,成功返回1,失败返回-1 | |
下面通过一个示例掌握其中部分函数的用法:
在w_maintain窗口中加入新的标签页,按下图增加控件,其中数据窗口是uo_dw控件,其datawindow属性为dw_emp(您可新建一个grid风格的数据窗口)。
为该控件的getfocus losefocus事件分别加入脚本:dw_cur=this 和setnull(dw_cur)

修改该数据窗口控件,加入一文本标签cr,将其expression属性设置为"currentrow()"。

在foot区加入一个计算列expression属性为"pagecount()"。

设置salary列的颜色设置表达式属性为"if(salary>2000,rgb(255,0,0),rgb(0,255,0))"

为数据窗口的rowfocuschanged事件添加如下代码:

在窗口的open事件中为该数据窗口设置事务对象并检索数据。

为“修改状态”按钮添加如下代码以查看数据的当前状态。

为重置窗口后重新检索数据添加如下代码:

为重置数据窗口加入如下代码:

保存所做的修改并运行程序。
数据空间