如何做出这样的combobox?(50分)

  • 主题发起人 主题发起人 bryanliu
  • 开始时间 开始时间
B

bryanliu

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做这样的combobox:
就像IE5的地址栏那样,当输入前面几个字符,就跳出下拉菜单,
且把具有这几个字符开始
的东东都显示在下拉菜单里。
而数据来源于某个table的某个字段。
谁能告诉我?
 
写程序过滤也是可以的,然后加入到下拉框中。
 
yes, InfoPower2000的ComboBox提供这样的功能
 
哪里有?
 
到http://www.chinaasp.com/delphi/component/default.asp
用关键字infopower查询.
 
我要实现的是渐增查询.
我试过了infopower的combobox,但他只是定位查询到的记录,
下拉框中仍然显示所有的数据,我要的效果是随着输入字符
的增加,下拉框的中的选项越来越少,直到找到符合条件的记录。

另:如果不用控件,自己用代码实现的话,怎么样查询效率最高?
 
你的要求只能自己写了,优化主要是数据组织和查找函数,如果是表的话,索引;
            另外你要优化的字符串查找函数。

 
bryanliu:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
我记得好象以前有讨论过类似的问题,不过ID号记不起来了好象是BaKuBaKu大虾回答的,你搜索
一下。
 
使用过滤的方式
 
那不就是要写一个及时查询和过滤吗?
再加一个combobox随时保留查询结果, 然后让第一个combobox显示, 何如?
 
可以在ComboBox的onKeydown消息中进行检索,不过要小心性能问题。
如下:
onKeydown
begin
while not table1.eof do begin
if pos(ComboBox.text,table1['字段名']) then
combobox.items.add(Table1['字段名'];
end;
end;
再postmessage一个鼠标点击消息。
这样应该就可以了,不过性能方面可能会很差(在大一点的库里)
 
加一个edit控件和一个DBLookupListBox控件
在edit控件的change事件上作如下处理
procedure TForm1.Edit1Change(Sender: TObject);
begin
with table1 do
begin
setkey;
fieldbyname('Category').asstring:=edit1.text;
gotonearest;
end;
end;
但是Category字段必须是索引字段
 
多人接受答案了。
 
后退
顶部