这样搞的话,他数据量稍微大些,那会搞死人的。 我碰到这种事情,一般是敲下回车,才给他过滤数据 procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char); var AFilter:string; begin if Key =#13 then if Trim(ComboBox1.Text) <> '' then Fun_InitCombo(Afilt); end;function TForm1.Fun_InitCombo(Afilt: string): Boolean; var ASql:string; begin ASql := 'select 加载字段 from 表 '; if Afilt <> '' then ASql := ASql + ' where 字段 like ' + QuotedStr('%'+Afilt+'%'); ADOQuery1.Close; ADOQuery1.SQL.Text := ASql; ADOQuery1.Open; ADOQuery1.First; ComboBox1.Clear; while not ADOQuery1.Eof do begin ComboBox1.Items.Add(ADOQuery1.FieldByName('').AsString); ADOQuery1.Next; end; end;如果你用的combo是数据感知控件,做这里要容易的多 另外,如果你需要录入字母能取得汉字,如输入:bjc ,那么可以过滤出:北京城,北疆场等 请另外开贴
你只能在OnKeyUp或是OnKeyPress事件里处理你每次输入的内容 查找匹配的字符串了
我碰到这种事情,一般是敲下回车,才给他过滤数据
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
var
AFilter:string;
begin
if Key =#13 then
if Trim(ComboBox1.Text) <> '' then
Fun_InitCombo(Afilt);
end;function TForm1.Fun_InitCombo(Afilt: string): Boolean;
var
ASql:string;
begin
ASql := 'select 加载字段 from 表 ';
if Afilt <> '' then
ASql := ASql + ' where 字段 like ' + QuotedStr('%'+Afilt+'%'); ADOQuery1.Close;
ADOQuery1.SQL.Text := ASql;
ADOQuery1.Open; ADOQuery1.First;
ComboBox1.Clear;
while not ADOQuery1.Eof do
begin
ComboBox1.Items.Add(ADOQuery1.FieldByName('').AsString);
ADOQuery1.Next;
end;
end;如果你用的combo是数据感知控件,做这里要容易的多
另外,如果你需要录入字母能取得汉字,如输入:bjc ,那么可以过滤出:北京城,北疆场等
请另外开贴
输入:bjc ,那么可以过滤出:北京城,北疆场等
这个怎么实现?