Вы можете переопределить методы Assign()
и Notify()
для TCollection
, чтобы получать уведомления о добавлении и удалении, и переопределять метод SetIndex()
для TCollectionItem
, чтобы получать уведомления о переиндексациях.Для добавления / удаления выведите исключение, чтобы отклонить операцию (в случае добавления вам нужно будет освободить новый элемент, который был добавлен).Для переиндексации просто выйдите, ничего не делая.
Чтобы провести различие между временем выполнения и временем разработки, пройдитесь по цепочке Owner TCollection
(если она вложена в другие классы), пока не найдетеTComponent
, тогда вы можете проверить его ComponentState
свойство для флага csDesigning
.