combobox怎么做成像极品火车时刻表那样,在combobox中输入汉字的首拼音后下拉框中显示所有对应的汉字;combobox中的内容是从一张表中取得的,
例如取数据库中不重复的城市名称字段,假如查出来有:
江苏
安徽
上海
河北
湖北接下来在combobox中输入hb或者h后则下拉框中过滤成
河北
湖北
输入:ah则下拉框中只显示‘安徽’
例如取数据库中不重复的城市名称字段,假如查出来有:
江苏
安徽
上海
河北
湖北接下来在combobox中输入hb或者h后则下拉框中过滤成
河北
湖北
输入:ah则下拉框中只显示‘安徽’
江苏 JS
湖北 HB
.....然后将combobox与数据表关联,每输入一个字母就在数据表中查询记录,更新combobox的item
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,看返回结果是不是和输入的一样.