Помимо обычной фильтрации , основанной на
свойствах Filter, Filtered и
методе-обработчике onFilterRecord, класс
TCustomADODataSet предоставляет разработчику дополнительные возможности.
задает групповой фильтр для записей, основываясь на информации о состоянии каждой записи набора данных, подобно рассмотренному выше свойству
RecordStatus.
Фильтрация возможна по следующим параметрам:
fgUnassigned.—
фильтр не задан;
fgNone — все ограничения,
заданные фильтром, снимаются, отображаются все записи набора данных;
fgPendingRecords — отображаются
измененные записи, несохраненные в хранилище данных при вызове метода
updateBatch или cancelBatch;
fgAffectedRecords — показываются
записи, обработанные при последнем сохранении в хранилище данных;
fgFetchedRecords — имеем
записи, полученные при последнем обновлении из источника данных;
fgPredicate — видны только
удаленные записи;
fgConfiictingRecords —
отображаются модифицированные записи, при сохранении которых в хранилище данных
возникла ошибка.
Для того чтобы групповая фильтрация заработала, необходимы два дополнительных условия. Во-первых, фильтрация должна быть включена — свойство
Filtered должно иметь Значение
True.
Во- вторых , свойство LockType
должно иметь значение ItBatchOptimistic.
with ADODataSet do begin
Close;
LockType := ItbatchOptimistic;
Filtered := True;
FilterGroup := fgFetchedRecords;
Open;
end;
Метод
procedure FilterOnBookmarks(Bookmarks: array of const);
включает фильтрацию по существующим закладкам. Для этого предварительно необходимо при помощи метода
GetBookmark установить закладки на интересующих записях. При вызове метода
FilterOnBookmarks автоматически очищается свойство
Filter, а свойству FilterGroup присваивается значение
gUnassigned.
Знаете ли Вы, как разрешается парадокс Ольберса? (Фотометрический парадокс, парадокс Ольберса - это один из парадоксов космологии, заключающийся в том, что во Вселенной, равномерно заполненной звёздами, яркость неба (в том числе ночного) должна быть примерно равна яркости солнечного диска. Это должно иметь место потому, что по любому направлению неба луч зрения рано или поздно упрется в поверхность звезды. Иными словами парадос Ольберса заключается в том, что если Вселенная бесконечна, то черного неба мы не увидим, так как излучение дальних звезд будет суммироваться с излучением ближних, и небо должно иметь среднюю температуру фотосфер звезд. При поглощении света межзвездным веществом, оно будет разогреваться до температуры звездных фотосфер и излучать также ярко, как звезды. Однако в дело вступает явление "усталости света", открытое Эдвином Хабблом, который показал, что чем дальше от нас расположена галактика, тем больше становится красным свет ее излучения, то есть фотоны как бы "устают", отдают свою энергию межзвездной среде. На очень больших расстояниях галактики видны только в радиодиапазоне, так как их свет вовсе потерял энергию идя через бескрайние просторы Вселенной. Подробнее читайте в FAQ по эфирной физике.