数据窗口中实现增量查询

数据窗口中实现增量查询

先来了解以下什么是数据窗口的增量查询功能。数据窗口的增量查询是针对于数据窗口的某一列而言,假设一个窗口中有单行编辑器和数据窗口两个控件,在单行编辑器控件中每输入一个字符,数据窗口就能找到这一列值左边部分与单行编辑器中内容相符合的行,并高亮度显示。例如数据窗口是按整型字段“ID”升序排列的,用户在单行编辑器中输入“1”,则数据窗口滚动到ID字段第一位为“1”的第一行并高亮度显示,再在“1”后面输入“0”,则数据窗口滚动到ID字段前两位为“10”的第一行,依此类推。
增量查询功能实现的关键有两点:一是单行编辑器控件能实时响应键盘的输入,捕捉每一个按键,获得其中的文本;二是数据窗口的模糊查询的功能,即能够找到列ID左边文本与单行编辑器文本相等的行,这可以用“like”来匹配。
具体操作步骤如下:
1、建立一个工作空间(workspace),取名为:zlcx。

2、建立一个应用(application),取名为:zlcx。

3、建立一个Standard Visual UserObject,基类为单行编辑器SingleLineEdit,取名为:uo_zlcx。

4、定义uo_zlcx的用户事件ue_enchange,Event ID:pbm_enchange,用于响应键盘的输入。

5、为uo_zlcx定义一个对象级函数,uf_zlcx(datawindow adw_name,string as_column) return (none)
//增量查询
//参数:adw_name 数据窗口名
// as_column 查询的列名
long ll_found_row
string ls_find
//查找条件(左部分与单行编辑器文本相等)
ls_find = "string(" +as_column + ") like " + "'" + this.text + "%'" 
//查找符合条件的行
ll_found_row = adw_name.Find(ls_find, 1, adw_name.RowCount()) 
if ll_found_row <= 0 then return 
//滚动到相匹配的行
adw_name.ScrollToRow(ll_found_row) 
adw_name.SelectRow(0 , false)
//将匹配行加亮显示
adw_name.SelectRow(ll_found_row , true)  

6、调用方法
新建立一窗口,内置一数据窗口控件dw_1和一用户对象控件sle_1(由uo_zlcx继承而来),并将dw_1和数据窗口对象关联。假设查询的列名为“ID”,则在sle_1的ue_enchange事件编写如下脚本:
this.uf_zlcx( dw_1, 'id')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值