Ecriture d'un gestionnaire d'événement OnFilterRecord

De RAD Studio
Aller à : navigation, rechercher

Remonter à Compréhension des ensembles de données - Index

Vous pouvez écrire du code pour filtrer les enregistrements en utilisant les événements Data.DB.TDataSet.OnFilterRecord générés par l'ensemble à chaque récupération d'enregistrement. Ce gestionnaire d'événement implémente un test qui détermine si l'enregistrement est inclus dans ceux qui sont visibles dans l'application.

Pour indiquer qu'un enregistrement répond à une condition de filtre, votre gestionnaire OnFilterRecord définit son paramètre Accept par True, pour inclure un enregistrement, ou par False, pour l'exclure. Par exemple, le filtre suivant affiche uniquement les enregistrements pour lesquels le champ State vaut CA :



 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";
 }



Quand le filtrage est activé, l'ensemble de données génère un événement OnFilterRecord pour chaque enregistrement récupéré. Le gestionnaire d'événement teste chaque enregistrement et seuls ceux répondant aux conditions de filtre apparaissent dans l'application. Les performances étant directement dérivées du nombre de fois que l'événement se déclenche et de la durée du traitement de chaque événement, il est conseillé de réduire autant que possible le code du gestionnaire d'événement OnFilterRecord.

Vous pouvez coder un nombre quelconque de gestionnaires d'événements OnFilterRecord et passer de l'un à l'autre à l'exécution. Par exemple, les instructions suivantes permettent de passer à un gestionnaire d'événement OnFilterRecord appelé NewYorkFilter :



 DataSet1.OnFilterRecord := NewYorkFilter;
 Refresh;



 DataSet1->OnFilterRecord = NewYorkFilter;
 ()



Voir aussi