[求助]一个小问题(50分)

  • 主题发起人 主题发起人 settingsun
  • 开始时间 开始时间
S

settingsun

Unregistered / Unconfirmed
GUEST, unregistred user!
在编辑框输入时我想实现动态提示,就是输入几个字母时能就近找到匹配的字符串,然后每<br>输入一个字符,都是这样的,但是如何对显示出的完整字符串的剩余部分用光标包括起来。
 
需一个数据库或文件储存常用字符串,<br>procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);<br>begin<br>&nbsp;adoQuery1.Close;<br>&nbsp;adoQuery1.SQL.Clear;<br>&nbsp;adoQuery1.SQL.Add('select zd from tab where str like "'+Edit1.Text+'%"');<br>&nbsp;adoquery1.Open;<br>&nbsp;if not adoQuery1.Eof &nbsp;then<br>&nbsp; &nbsp;edit1.Text:=adoQuery1.fieldByName('str').AsString;<br>end;
 
这个我知道,但是最后一句话应如何实现,可能我也说的不太明白,有很多软件都有这种<br>功能,例如Foxmail的邮件地址提示功能,我想实现的是剩余的字符串如何用光标包括起来<br>,然后再每输入一个字符就会覆盖当前的字符,然后光标再包括剩余的字符串。
 
刚贴的是错误的,这段测试并通过。要在edit的keyup事件中处理。<br><br>procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;<br>&nbsp; Shift: TShiftState);<br>var<br>&nbsp;tmpStr:String;<br>&nbsp;ss,ls:integer;<br>begin<br>&nbsp;adoQuery1.Close;<br>&nbsp;adoQuery1.SQL.Clear;<br>&nbsp;adoQuery1.SQL.Add('select ZH from KH_TAB where ZH like "'+Edit1.Text+'%"');<br>&nbsp;adoquery1.Open;<br>&nbsp;if not adoQuery1.Eof &nbsp;then &nbsp;begin<br>&nbsp; &nbsp;tmpStr:=adoQuery1.fieldByName('ZH').AsString ;<br>&nbsp; &nbsp;//label1.Caption:=tmpStr;<br>&nbsp;end<br>&nbsp;else<br>&nbsp;tmpStr:=Edit1.text;<br>&nbsp;ss:=length(Edit1.text);<br>&nbsp;edit1.Text:=tmpStr;<br>&nbsp;ls:=length(tmpStr)-ss;<br>&nbsp;Edit1.SetFocus;<br>&nbsp;Edit1.SelStart:=ss;<br>&nbsp;Edit1.SelLength:=ls;<br><br><br>end;
 
接受答案了.
 
后退
顶部