Eine Behandlungsroutine für das Ereignis OnFilterRecord schreiben

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Filter erzeugen


Sie können Quelltext schreiben, mit dem die Datensätze mithilfe von DB.OnFilterRecord-Ereignissen gefiltert werden. Diese Ereignisse werden von der Datenmenge für jeden abgerufenen Datensatz generiert. Mit dieser Ereignisbehandlungsroutine wird ein Test implementiert, der festlegt, ob ein Datensatz für die Anwendung sichtbar sein soll oder nicht.

Zur Angabe, ob ein Datensatz die Filterbedingung erfüllt, wird in der Ereignisbehandlungsroutine für OnFilterRecord der Parameter Accept auf True gesetzt, wenn ein Datensatz eingeschlossen werden soll, und auf False, wenn dies nicht der Fall sein soll. Beispiel: Mit dem folgenden Filter werden nur diejenigen Datensätze angezeigt, bei denen der Wert im Feld State "CA" lautet:



 procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
 begin
   Accept := DataSet['State'].AsString = 'CA';
 end;



 void __fastcall TForm1::Table1FilterRecord(TDataSet *DataSet; bool &Accept)
 {
   Accept = DataSet->FieldByName["State"]->AsString == "CA";
 }



Wenn die Filterung aktiviert ist, wird für jeden abgerufenen Datensatz das Ereignis OnFilterRecord ausgelöst. Die Ereignisbehandlungsroutine prüft jeden Datensatz. Es werden nur Datensätze angezeigt, welche die Bedingungen des Filters erfüllen. Da das OnFilterRecord- Ereignis für alle Datensätze der Datenmenge generiert wird, sollten Sie die Ereignisbehandlungsroutine so unaufwändig wie möglich programmieren, um die Systemleistung nicht zu beeinträchtigen.

Sie können eine beliebige Anzahl von Ereignisbehandlungsroutinen für OnFilterRecord programmieren und zur Laufzeit zwischen diesen umschalten. Der folgende Quelltext weist dem Ereignis OnFilterRecord beispielsweise eine Behandlungsroutine namens NewYorkFilter zu:



 DataSet1.OnFilterRecord := NewYorkFilter;



 DataSet1->OnFilterRecord := NewYorkFilter;
 ()



Siehe auch