Hallo Simon,
eine kleine Änderung an deinem Code möchte ich dir nahelegen:
Delphi-Quellcode:
procedure TMainForm.FilterEditChange(Sender: TObject);
begin
with DBGrid do
begin
DataSource.DataSet.Filtered := Trim(FilterEdit.Text) <> '';
if DataSource.DataSet.Filtered
then DataSource.DataSet.Filter := Format('%s = %s', [SelectedField.FieldName, QuotedStr(FilterEdit.Text)]); // Edit
else DataSource.DataSet.Filter := '';
end;
end;
Bei den
ADO-Komponenten verwendest du TADODataSet für Eregbnismengen und TADOCommand (oder direkt TADOConnection) für alles andere. TADIQuery und TADOTable sind eine Migrationshilfe für
BDE-Projekte.
Nur weil es die Filter-Eigenschaft auch im IDAPI Funktionsumfang gab, ist sie nichts Schlechtes. Sie ist eine ureigene Eigenschaft jedes
ADO RecordSets und dient der schnellen client-seitigen Filterung.
Wenn MainData ein Datenmodul ist, dann würde ich DataSource1 dort nur dann hinsetzen, wenn sie dort eine Master-Detail-Beziehung steuert. Die DataSource für das DBGrid gehört zum DBGrid.
Freundliche Grüße
Edit: spaces around operator