combobox怎么做成像极品火车时刻表那样,在combobox中输入汉字的首拼音后下拉框中显示所有对应的汉字;combobox中的内容是从一张表中取得的,
例如取数据库中不重复的城市名称字段,假如查出来有:
江苏
安徽
上海
河北
湖北接下来在combobox中输入hb或者h后则下拉框中过滤成
河北
湖北
输入:ah则下拉框中只显示‘安徽’

解决方案 »

  1.   

    设计数据表
      江苏  JS
      湖北  HB
    .....然后将combobox与数据表关联,每输入一个字母就在数据表中查询记录,更新combobox的item
      

  2.   


    function TForm1.getPY(hzchar:string):char; 
    begin 
    case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of 
       $B0A1..$B0C4:result:='A'; 
       $B0C5..$B2C0:result:='B'; 
       $B2C1..$B4ED:result:='C'; 
       $B4EE..$B6E9:result:='D'; 
       $B6EA..$B7A1:result:='E'; 
       $B7A2..$B8C0:result:='F'; 
       $B8C1..$B9FD:result:='G'; 
       $B9FE..$BBF6:result:='H'; 
       $BBF7..$BFA5:result:='J'; 
       $BFA6..$C0AB:result:='K'; 
       $C0AC..$C2E7:result:='L'; 
       $C2E8..$C4C2:result:='M'; 
       $C4C3..$C5B5:result:='N'; 
       $C5B6..$C5BD:result:='O'; 
       $C5BE..$C6D9:result:='P'; 
       $C6DA..$C8BA:result:='Q'; 
       $C8BB..$C8F5:result:='R'; 
       $C8F6..$CBF9:result:='S'; 
       $CBFA..$CDD9:result:='T'; 
       $CDDA..$CEF3:result:='W'; 
       $CEF4..$D188:result:='X'; 
       $D189..$D4D0:result:='Y'; 
       $D4D1..$D7F9:result:='Z'; 
    else 
       result:=char(32); 
       end; 
    end;
    这是网上一个根据汉字查拼音首字母的程序你要做的就是反向查.
    比如输入ah,根据上表,a就是所有汉字编码在$B0A1到$B0C4的,h就是所有在$B9FE之间的$BBF6,然后对于列表候选项里的每条string,检查是否匹配也可以,对列表候选项,逐条使用getPY,看返回结果是不是和输入的一样.