首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

dw中输入字符时自动查询补充(仿EXCEL的自动补足字符),该怎么处理

2012-03-09 
dw中输入字符时自动查询补充(仿EXCEL的自动补足字符)想仿excel中的自动在输入字符后,查询本列的所有历史记

dw中输入字符时自动查询补充(仿EXCEL的自动补足字符)
想仿excel中的自动在输入字符后,查询本列的所有历史记录,补足后续字符

例如: 产品名称
  热水器
  电单车
  电视机
  冰箱
  办公桌

-------------------以上是历史已存在数据
当新增行,输入“电视”字符时,自动在输入的“电视”字符后补足“机”字符,并且高亮选择“机”字,如果不是想要的字符可以继续输入替换。

现在初步用editchanged事件,只能对单个英文、数字字符输入时提取data值时还算可以正常提取到输入的字符值,但如果我用中文输入法,输入词组(如‘电视’2字直接拼写出来),直接按空格键输入这个编辑字段时,发现data返回值提取的是第1个字符,这样使得我无法正常进行后续的查询,希望有朋友指点一二。

用的pb11,郁闷中……
 

[解决办法]
那是因为输入内容时是写在控件上面,只有回车后才能写入控件中!
可以做个函数,在editchanged事件中用 post 方法来调用这它!
[解决办法]
代码如下:(需要定义一个实例变量string is_prior_txt)

C/C++ code
string ls_findexp, ls_data, ls_col_namlong ll_rowls_col_nam = dwo.nameif lower(left(this.describe(ls_col_nam + ".ColType"), 4)) = 'char' then    if len(data) > 0 then        //    else        is_prior_txt = data        return    end if        if len(is_prior_txt) >= len(data) then        is_prior_txt = data        return    elseif pos(data, "'") > 0 then        //    //elseif pos(data, '"') > 0 then        //    elseif pos(data, '~~') > 0 then        //    else        ls_findexp  = "(left(" + ls_col_nam + "," + string(len(data)) + ") = '" + data + "') and "        ls_findexp += "(getrow() <> " + string(row) + ")"        ll_row = this.find(ls_findexp, this.rowcount(), 1)        if ll_row > 0 then            ls_data = this.getitemstring(ll_row, ls_col_nam)            this.post function settext(ls_data)            this.post function selecttext(len(data) + 1, len(ls_data))        end if    end if    is_prior_txt = dataend if 

热点排行