combobox 控件实现模糊查找功能 ( 积分: 10 )

  • 主题发起人 主题发起人 fuxin198311
  • 开始时间 开始时间
F

fuxin198311

Unregistered / Unconfirmed
GUEST, unregistred user!
就是当我的combobox中有数据是 张三 张四 李五,李六 当我在combobox框中输入张
那么下拉框只显示张三,张四 在PB中很容易实现的,请问在delphi中怎么实现呢
谢了
 
自己写个filter函数就ok了
 
procedure TForm1.ComboBox1Change(Sender: TObject);
var
thepchar : array[0..79] of char;
thestring : string;
theindex: integer;
begin
if combobox1.text <> '' then
begin
strpcopy(thepchar,combobox1.text);
theindex := sendmessage(combobox1.handle,cb_selectstring,-1, longint(@thepchar));
sendmessage(combobox1.handle,cb_settopindex, theindex,0);
end
else
begin
sendmessage(combobox1.handle,cb_setcursel,-1,0);
sendmessage(combobox1.handle,cb_settopindex,0,0);
end;
end;
 
这样还是没有过滤 下拉框还是显示所有的
 
模糊查找,動態加入
 
你可以将TCombobox的AutoDropDown设为True,
当你输入'张'时,虽然下拉框还是显示所有项,但已定位到第一条符合'张'的项上,
相去无多,否则寻找别的控件,或者自己做一个。
 
procedure TForm1.ComboBox1Change(Sender: TObject);
var
thepchar : array[0..79] of char;
s1,thestring : string;
i,theindex: integer;
begin
s1:=combobox1.text;
if s1<>'' then
begin
for i:=combobox1.Items.Count-1 downto 0 do
begin
if not AnsiContainsText(combobox1.Items,s1) then combobox1.Items.Delete(i);
end;
end
else
begin
combobox1.Items.Clear;
combobox1.Items.AddStrings(ss);//恢复
end;
end;



要先将combobox1.items保存
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部