Агрегаты. Объекты-агрегаты.
Рассмотрим свойства класса TAggregate.
Имя агрегата содержится в свойстве:
property AggregateName: string;
…которое может быть использовано при отображении агрегата в визуальных компонентах.
Вычисляемое выражение с применением агрегатных функций должно находиться в свойстве:
property Expression: String;
Например, для таблицы COUNTRY.DB из демонстрационной базы данных Delphi можно вычислять общую площадь государств Северной и Южной Америки (площадь государства содержится в поле Area):
ClientDataSet.Aggregates[Somelndex].Expression: = 'SUM(Area);
Вычислением агрегата управляет свойство:
property Active: Boolean;
…а вычисленное значение возвращает функция:
function Value: Variant;
Если пользователь редактирует набор данных, то для всех включенных агрегатов (Active = True) возвращаемое значение автоматически пересчитывается.
Например, после сохранения изменений в наборе данных можно визуализировать новое значение агрегата:
SomeLabel.Caption: = ClientDataSet.Aggregates[0].AggregateName; SomeEdit.Text: = ClientDataSet.Aggregates[0].Value;
Для проверки активности агрегата, помимо проверки значения свойства Active, можно также использовать свойство:
property InUse: Boolean;
Если оно возвращает значение True – вычисляемое выражение агрегата рассчитывается.
Видимость агрегата в визуальных компонентах управляется свойством:
property Visible: Boolean;
Для того чтобы снизить вычислительную нагрузку на набор данных, можно отключить все агрегаты одновременно. Для этого свойству:
property AggregatesActive: Boolean;
…необходимо присвоить значение False.
Если же AggregatesActive = True, вычисляются только активные агрегаты, для которых свойство Active имеет значение True.
Если вам необходимо использовать все активные агрегаты, то вместо их последовательного перебора с проверкой свойства Active можно использовать свойство:
property ActiveAggs[Index: Integer]: TList;
…компонента TClientDataSet, которое представляет собой список активных агрегатов.