Programming: Delphi
Иллюстрированный самоучитель по Delphi 7 для профессионалов
Объекты-агрегаты
Для вычисления агрегатных выражений для всех записей набора данных используются объекты класса
TAggregate. Индексированный список этих объектов содержится в свойстве
компонента TClientDataSet. Прямым предком класса
TAggregates является класс
TCollection, поэтому для него можно использовать все основные приемы работы с коллекциями (см. гл. 7).
Для создания нового агрегата необходимо щелкнуть на кнопке свойства в Инспекторе объектов и, в появившемся Редакторе агрегатов, выбрать пункт
Add во всплывающем меню или щелкнуть на кнопке
Add New (рис. 22.3).
Новый агрегат может быть добавлен и динамически:
Рис. 22.3. Редактор агрегатов
компонента TClientDataSet
Рассмотрим свойства класса TAggregate.
Имя агрегата содержится в свойстве
которое может быть использовано при отображении
агрегата в визуальных компонентах.
Вычисляемое выражение с применением агрегатных
функций должно находиться в свойстве
Например, для таблицы COUNTRY.DB из демонстрационной
базы данных Delphi можно вычислять общую площадь государств Северной и Южной
Америки (площадь государства содержится в поле Area):
Вычислением агрегата управляет свойство
а вычисленное значение возвращает функция
Если пользователь редактирует набор данных,
то для всех включенных агрегатов (Active = True)
возвращаемое значение автоматически пересчитывается.
Например, после сохранения изменений в наборе
данных можно визуализировать новое значение агрегата:
SomeLabel.Caption
:= ClientDataSet.Aggregates[0].AggregateName;
SomeEdit.Text
:= ClientDataSet.Aggregates[0].Value;
Для проверки активности агрегата, помимо проверки
значения свойства Active, можно также использовать
свойство
Если оно возвращает значение
True — вычисляемое выражение агрегата рассчитывается.
Видимость агрегата в визуальных компонентах
управляется свойством
Для того чтобы снизить вычислительную нагрузку
на набор данных, можно отключить все агрегаты одновременно. Для этого свойству
необходимо присвоить значение False.
Если же AggregatesActive
= True, вычисляются только активные агрегаты, для которых свойство Active
имеет значение True.
Если вам необходимо использовать все активные
агрегаты, то вместо их последовательного перебора с проверкой свойства
Active можно использовать свойство
компонента TClientDataSet,
которое представляет собой список активных агрегатов.
Назад | Оглавление | Вперёд
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|