Содержание

11. Фильтр формы

Фильтром формы можно управлять с помощью свойства Filter класса TFilterObject. Пример настройки фильтра:

var
  FF: TFilterField;
begin
  Self.Filter.Clear;                           // Удаляем все поля из фильтра
  FF := Self.Filter.AddField('Количество');    // Добавляем поле фильтра
  FF.Values.Add('2 .. 5');                     // Для чисел, дат и времени значение задается как диапазон
  FF.Values.Add('10 .. ');                     // Если нижней или верхней границы нет, то ставится пробел
  FF := Self.Filter.AddField('Название');
  FF.Values.Add('Мука');
  FF.IsNot := True;                            // Ищем все, кроме муки
  FF := Self.Filter.AddField('Клиент');        // Если добавляем объект, 
  FF.Values.Add(<ID записи>);                  // то значением должно быть id записи, число.
  Self.Refresh;
end;

Фильтром можно управлять до и после открытия набора данных. Пример чтения фильтра:

var
  FF: TFilterField;
begin
  FF := Self.Filter.FindField('Количество');
  if FF.Values.Count > 0 then
  begin
    Debug(FF.Value[0]);
    Debug(FF.EndValue[0]);
  end;
end;

TFilterObject

Краткое описание методов и свойств фильтра TFilterObject:

СвойствоОписание
function AddField(const FieldName: String): TFilterField Метод добавляет поле в фильтр
procedure Clear Метод удаляет все поля из фильтра.
procedure DeleteField(F: TFilterField) Метод удаляет из фильтра поле. В качестве параметра передается объект поля фильтра.
function FindField(const FieldName: String): TFilterField Ищет в фильтре поле с указанным именем и возвращает объект поля. Если объект не найден, возвращает nil.
property Count: Integer [r] Возвращает количество полей в фильтре.
property Fields[Index: Integer]: TFilterField [r] default Доступ к полю фильтра по индексу. Это свойство по умолчанию, т. е. название свойства можно не писать: Self.Filter[1].Value := …

TFilterField

Краткое описание свойств поля фильтра TFilterField:

Свойство Описание
property FieldName: String [r] Имя поля.
property IsNot: Boolean [rw] Флажок «Не».
property IsNull: Boolean [rw] Флажок «Пусто».
property Values: TStringList [r] Доступ к значениям поля фильтра.
property Value[Index: Integer]: String [r] Доступ к значению поля или к начальному значению, если это диапазон (число, дата, время).
property EndValue[Index: Integer]: String [r] Доступ к конечному значению диапазона.