На этом шаге мы рассмотрим использование события OnFilterRecord.
Событие OnFilterRecord возникает при установке в свойстве Filtered значения True. Обработчик события имеет два параметра: имя фильтруемого набора данных и переменную Acept, в которую программа должна поместить True, если текущая запись удовлетворяет критерию фильтрации.
В отличие от критерия фильтрации, помещаемого в строку Filter и ограниченного рамками синтаксиса условного выражения, критерий, реализуемый в обработчике события OnFilterRecord, определяется синтаксисом Object Pascal и может реализовывать сложные алгоритмы фильтрации. Например, следующий обработчик:
procedure TDataModule1.TablePupilsFilterRecord (DataSet: TDataSet;var Accept: Boolean); begin Accept:=(Pos('П',DataSet['FIO'])=1); end;
Если в строке Filter и в обработчике события OnFilterRecord заданы разные критерии фильтрации, то выполняются оба.
На следующем шаге мы рассмотрим навигацию в неотфильтрованном НД между записями, удовлетворяющими фильтру.