相当有挑战性:编辑框中类似于增量搜索,比如字段名为“关键字”,在该编辑框输入“中华”两个字的时候,大好中华,中华人民共和国等列出,输入到“中华人”的时候,只列出了中华人民共和国。
如何实现的比较高效方便?类似于google的搜索框那样?
我现在设计两个方案,一是打开编辑窗口的时候,将数据库中关键字字段的所有值都赋值到一数组中,编辑况中字符改变事件中查找并列出,第二个方案是字符改变事件中select数据库并列出。前一个方案查找速度慢,占内存大,后一个方案字符改变一次select一次,如果打字快的人,几秒中输入的字符10个,要查找10次,数据库的select可能无法承受。欢迎各位大侠提出自己的创意见解~~

解决方案 »

  1.   

    非常简单!换用ComboboxEx控件就可以实现,自带的功能。
      

  2.   

    也可以用combobox,实现将字段内容读入combobox中,在其onchange事件中
    procedure TForm1.ComboBox1Change(Sender: TObject);
    begin  if pos(form1.ComboBox1.Text,form1.ComboBox1.Items.Text)>0 then
        sendmessage(form1.ComboBox1.Handle,cb_showdropdown,integer(true),0)
      else
        sendmessage(form1.ComboBox1.Handle,cb_showdropdown,integer(false),0);
    end;
      

  3.   

    不知道楼主所谓的“相当有挑战性”是指哪里?用ComboboxEx控件改下属性就可以实现,任何代码都不用写。
      

  4.   

    用ComboboxEx控件或者Edit+用Combobox控件组合都可实现
      

  5.   

    我先研究一下lovelymelon 的方法。如果将所有字段的值都读入ComBoBox的ItemStrings中,是不是会出问题?比如有3万条记录。
      

  6.   

    可以把两种方法结合起来。
    当输入第一个汉字的时候select并把字段的值都读入ComBoBox的ItemStrings中,输入之后的汉字时使用ComBoBox的自动完成特性。
      

  7.   

    各位大侠太聪明了!!!
    另外,ComboboxEx控件在哪个标签中?有没有DBComboboxEx?如果没有的话,有没有办法ComboboxEx与数据库结合起来,实现类似于DBComboBox?
      

  8.   

    CXCombobox这个控件是否有办法设置成类似于增量搜索?输入“中华”,中华人民,爱我中华都列出。目前只能列出中华开头的
      

  9.   


    记录太多的话肯定会慢的。CXCombobox确实好像只能列出以中华开头的,而无法列出所有包含有中华两字的字符串
      

  10.   

    用cxcombobox,用like查询,每次查10条数据不就行了,不管你有好多数据,每次都只查10笔
      

  11.   

    ComboboxEx控件或Combobox都可實現