Ну так и делай. Только там не на DBGrid, а на самом источнике данных делается.
Код:
procedure TForm1.ADOQuery1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
If FMyFiltered
Then
Accept := (DataSet.FieldByName('Date1').AsDateTime > DateTimePicker1.Date) And
(DataSet.FieldByName('Date1').AsDateTime < DateTimePicker2.Date)
Else Accept := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FMyFiltered := True;
end;
ЗЫ. Предпочитаю пользоваться этим событием - больше возможностей.