dw中输入字符时自动查询补充(仿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_nam
long ll_row
ls_col_nam = dwo.name
if 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 = data
end if