表 tab1 的结构是:
字段 lxmc (类型名称) pym (拼音码)
记录 身份证 sfz
驾驶证 jsz
生育证 syz我想在combox 下拉的时候 combox 里显示 tab1 的类型名称,然后当在combox 里输入拼音缩写的时候,每输入一个拼音字母combox的下拉栏自动弹出,将含有这些拼音字母的类型名称都列出来。例如我在combox框里输入‘s’,下拉栏就列出 ‘身份证’ 和 ‘生育证’,然后再输入‘f’时就直接列出‘身份证’。请问这样应该这么做?
字段 lxmc (类型名称) pym (拼音码)
记录 身份证 sfz
驾驶证 jsz
生育证 syz我想在combox 下拉的时候 combox 里显示 tab1 的类型名称,然后当在combox 里输入拼音缩写的时候,每输入一个拼音字母combox的下拉栏自动弹出,将含有这些拼音字母的类型名称都列出来。例如我在combox框里输入‘s’,下拉栏就列出 ‘身份证’ 和 ‘生育证’,然后再输入‘f’时就直接列出‘身份证’。请问这样应该这么做?
我觉得,我们工作的重点不是在实现这个效果,而应该是你的系统工程
adoquery.sql.clear;
adoquery.sql.add('select lxmc from tab1 where pym like '''+Trim(combox.text)+''' ');
adoquery.open;adoquery.first;
combox.items.clear;
while not adoquery.eof do
begincombox.items.add(adoquery.fieldbyname('lxmc').Asstring);
adoquery.next
end;combox.itemindex:=0;
注意做的时候要智能一些,例如只有一个选择的时候,就自动在文本框内赋值;要用上keypress事件来使用回车或空格获取选择的item;
总之很简单。
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..$D1B8 : Result :='X';
$D1B9..$D4D0 : Result :='Y';
$D4D1..$D7F9 : Result :='Z';
else
Result := char(0);
end;
end;procedure SearchByPyIndexStr(var listbox:TComboBox;PYIndexStr :string; TableName,PerName :string);
label NotFound;
var
I, J :Integer;
Hzchar :String;
Qry:TQuery;
sql:string;
begin
Qry := TQuery.Create(nil);
Qry.databasename := 'DB';
sql:='SELECT '+PerName+' FROM '+TableName+'';
Qry.close;
Qry.sql.clear;
Qry.sql.add(sql);
Qry.open; //For I:=0 to Form1.ListBox1.Items.Count-1 do while not Qry.eof do
begin
For J:=1 to Length(PYIndexStr) do
begin
Hzchar :=Qry.fieldbyname(''+PerName+'').asstring[2*J-1]+Qry.fieldbyname(''+PerName+'').asstring[2*J];
//Hzchar :=Form1.ListBox1.Items[I][2*J-1]+Form1.ListBox1.Items[I][2*J];
if (PYIndexStr[J] <>'?') and (UpperCase(PYIndexStr[J])<>GetPyIndexChar(Hzchar)) then
goto NotFound;
end;
//Form1.ResultList1.Add(Form1.ListBox1.Items[I]);
listbox.Items.Add(Qry.fieldbyname(''+PerName+'').asstring);
NotFound:
Qry.next;
end; listbox.ItemIndex:=0;
Qry.free;
end;叫我哥!