OnFilterRecord イベントのハンドラの記述

提供: RAD Studio
移動先: 案内検索

フィルタの作成 への移動


レコードが取得されるたびにデータセットで生成される Data.DB.TDataSet.OnFilterRecord イベントを使って、レコードをフィルタ処理するコードを記述できます。このイベント ハンドラでは、指定されたレコードをアプリケーションでの表示対象に含めるかどうかを決める検査を実行します。

レコードがフィルタ条件に一致しているかどうかを示すために、OnFilterRecord イベントのハンドラでは、Accept パラメータを True に設定してレコードを受け入れるか、False に設定してレコードを除外します。たとえば、次のフィルタでは、State フィールドが "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";
}

フィルタ処理を有効にすると、レコードを取得するたびに OnFilterRecord イベントが発生します。イベント ハンドラで各レコードが検査され、フィルタ条件を満たすレコードだけが表示されます。OnFilterRecord イベントはデータセット内のすべてのレコードに対して発生するので、パフォーマンスに悪影響を及ぼさないように、このイベント ハンドラは、できるだけ簡潔に記述しておかなければなりません。

OnFilterRecord イベント ハンドラは、いくつでも必要なだけ記述しておき、実行時に切り替えることができます。たとえば、次の文では、NewYorkFilter という OnFilterRecord イベント ハンドラに切り替えています。

DataSet1.OnFilterRecord := NewYorkFilter;
Refresh;
DataSet1->OnFilterRecord = NewYorkFilter;
()

関連項目