Динамические фильтры можно создавать и редактировать во время выполнения приложения, для них используется только свойство Filter.

При создании текста фильтра для свойства Filter используются имена полей соответствующей таблицы БД, а для задания отношений применяются все операторы сравнения (>, >=, <, <=, =, о) и логические операторы (AND, OR, NOT):

Fieldl>100 ÄND Field2=20

Сравнивать между собой два поля нельзя. Следующий фильтр вызовет ошибку при попытке использования:

ItemCount=Balance AND InputPrice>OutputPrice

При создании динамических фильтров можно изменять как выражение фильтра целиком, так и его части. Например, ограничивающее значение для поля можно задавать при помощи элементов управления формы, что позволяет пользователю приложения управлять фильтрацией набора данных:

procedure TForml.EditlChange(Sender: TObject); begin with Tablel do

begin Filtered := False;
Filter := 'Fieldl>=' + TEdit(Sender).Text;
Filtered := True;
end;
end;

В фильтрах можно производить отбор по частям строк для строковых полей, для этого используется символ звездочка:

ItemName='A*'

Фильтр начинает работать только после того, как свойству Filtered присваивается истинное значение. Перед изменением текста динамического фильтра или для отключения фильтра свойству Filtered присваивается значение False.

Параметры фильтра определяются свойством FilterOptions:

property FilterOptions: TFilterOptions;
TFilterOption = (foCaselnsensitive, foNoPartialCompare);
TFilterOptions = set of TFilterOption;

•Параметр foCaselnsensitive, будучи включенным в свойстве, отключает сравнение строковых значений с учетом регистра символов.

Параметр foNoPartialCompare отключает отбор строковых значений по части строки.

Метод-обработчик onFiiterRecord имеет следующее объявление:

type TFilterRecordEvent = procedure(DataSet: TDataSet;
var Accept: Boolean) of object;
property OnFiiterRecord: TFilterRecordEvent;

Если этот метод создан для набора данных, то он вызывается для каждой его записи. Программный код метода должен присваивать параметру Accept истинное или ложное значение. В результате запись передается в набор данных или отсекается:

procedure TForml. TablelFilterRecord (DataSet: TDataSet;
var Accept: Boolean);
begin
Accept := ArchOrdersArchDat.AsString >= DateEditl.Text;
end;

Важнейшее преимущество метода OnFilterRecord, по сравнению со свойством Filter, заключается в том, что в этом методе-обработчике можно сравнивать поля и производить вычисления над их значениями.

Недостатком метода является недостаточная гибкость, хотя такой фильтр можно модифицировать путем присвоения методу процедурной переменной, содержащей ссылку на новый метод.

Быстрый переход к помеченным записям

Закладки, как инструмент работы с записями набора данных, позволяют осуществлять быстрое перемещение на нужную запись. Набор данных может содержать неограниченное число закладок, каждая из которых представляет собой указатель. Закладку можно создать только для текущей записи набора данных.

При работе с закладками используются три основных метода:


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Август
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс