急,如何做自动完成功能。象IE的地址栏 (100分)

  • 主题发起人 主题发起人 神舟5号
  • 开始时间 开始时间

神舟5号

Unregistered / Unconfirmed
GUEST, unregistred user!
我知道SHAutoComplete可以做自动完成功能,但是它显示的是曾经输入过了IE地址。我想让它从数据库或着别的地方取我所需要数据,而不只是保存在注册表中的IE地址。不知道怎么实现。
代码:
  FAutoComplete  := CreateComObject(CLSID_AutoComplete) as IAutoComplete2;
  [b][red]FStrings := TEnumString.Create(SourceMemo.Lines) as IUnknown;[/red][/b]
  OleCheck(FAutoComplete.SetOptions(ACO_AUTOSUGGEST or ACO_UPDOWNKEYDROPSLIST));
  OleCheck(FAutoComplete.Init(CompletionEdit.Handle, FStrings, nil, nil));
这是hubdog在深度探索里的代码。但小弟愚笨,不知如何从数据库中取值到Fstring中。万望高手指点。多谢了
 
这个我也想知道,就像sql联机帮助一样,好像有个这样的控件.
 
是什么控件啊
 
是个很不错的功能啊
 
有很多组件都已经实现了,不是写在注册表里,就是写在文件里。
我常用的就是Ehlib有一个MRUlist属性
 
是类似于增量查询的combobox吧,有这样的控件,或者自己写也行
 
d7已经有AutoComplete的功能了。但我是要在delphi5里用啊。D5可没有这样的功能啊
 
var
Source: TStringList;
........................
//here load all the lines into Source
FStrings := TEnumString.Create(Source) as IUnknown;
 
自己写一个吧,费不了多少时间。
在c盘底下建立一个ini文档就可以了,每次在控件里输入的数据都会被记录到ini里(就是按回车的时候),只要在纪录之前比较是否有重复,然后在key_down或者控件的change事件里,每按一个按键,都对比输入框和ini文档里的数据,匹配的话就把文档里的相应的数据读出来填在输入框里面,或者你要用hint来提示用户也行。大体就是这样。
 
不要听他们的!!!
Auto-Suggest功能强大, 自己做是做不来的,楼主贴出的代码,
只要把SourceMemo.Lines用一个Source(类型为TStringList)
代替, 初始时将所有数据装入Source,然后
FStrings := TEnumString.Create(Source) as IUnknown;
就可以了, 相信将数据装入Source很容易吧
 
推荐一本书上面有是delphi版的,上面有你想要的东西

Delphi 深度探险第二版
 
jackchin多谢,这样一来,每次系统运行的时候都要到数据库中取数据然后放到TStringList中。不知道还有没有更好的方法。
 
后退
顶部