试试这个。很灵活的,组合查询你自己加一个条件就OK了?
//查询联系人的信息
procedure Thhtx.BtnSearchClick(Sender: TObject);
begin
   if trim(SearchExp.text)='' then
   Begin
      MessageBox(handle,'查询表达式不能为空,请确认查询表达式是否为空!',
      '提示信息',MB_OK+MB_ICONINFORMATION);
      Exit;
   End;
   try
      Table1.Filtered :=False;
      Table1.OnFilterRecord:=FilterRecord;
   finally
      Table1.Filtered :=True;
   end;
   hhtx.SearchExp.Text :='';
end;procedure Thhtx.FilterRecord(DataSet: TDataSet; var Accept: Boolean);
var
   Exp,FieldValue:String;
begin
   Exp:=trim(SearchExp.Text);
   if RadName.Checked =True then
      FieldValue:=Table1.fieldbyname('姓名').AsString
   else
      if RadNickName.Checked =True then
         FieldValue:=Table1.fieldbyname('昵称').AsString
      else
         FieldValue:=Table1.fieldbyname('编号').AsString;
   if pos(uppercase(Exp),uppercase(FieldValue))<>0 then
      Accept:=true
   else
      Accept:=False;
end;