Спецификация агрегатов TClientDataSet не добавляется автоматически при создании поля агрегата.
-
09-06-2019 - |
Вопрос
Мне нужно создать агрегатное поле в TClientDataSet, но, как сказано в документации:
Выберите ОК.Недавно определенное поле агрегата автоматически добавляется в набор данных клиента, а свойство агрегатов автоматически обновляется, чтобы включить соответствующую спецификацию агрегата.
Когда я добавляю новое агрегатное поле, агрегатная спецификация не добавляется в агрегаты TClientDataSet, поэтому я не могу использовать его OnUpdateMethod.
Я также попытался обработать событие OnChange моего нового агрегатного поля, но оно вообще не запускается.
Я делаю что-то неправильно?Я просто хочу иметь агрегированное поле и запускать событие при каждом изменении его значения.
Это сломано на делфи?Потому что то, что указано в документации, не отражает фактическое поведение.
редактировать:@Michal sznajder Я использую Delphi 2007
Решение
Я думаю, вы можете запутаться между объектами TAggregate и TAggregateField, и документация Delphi, вероятно, не поможет.
Объекты AFAICT и TAggregateField автоматически «пересчитываются» и могут быть привязаны к элементам управления, поддерживающим данные, например TDBText, но не имеют никаких событий OnUpdate.
С другой стороны, объекты «TAggregate» имеют событие OnUpdate, но не могут быть привязаны к элементам управления, поддерживающим данные.
Это может быть поучительно: http://dn.codegear.com/article/29272
Другие советы
Какая версия Делфи?Я только что попробовал чистое приложение D7, и был добавлен TAggregateField.