Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.220.178.207] |
|
Сообщ.
#1
,
|
|
|
Есть класс (например TMyClass). У этого класса есть поле типа TImageList (например TMyClass.FMyImageList: TImageList).
Этот ImageList создается в одном из методов класса. Ссылку на это поле (т.е. на компонент ImageList) могут получать другие компоненты в проекте (например, кнопки на формах и т.п.). Хотелось бы реализовать такой функционал: Когда число компонент (т.е. кнопок и т.п.), использующих этот ImageList становится равным нулю, то как-то автоматически удалять этот ImageList. Сначала думал сделать так: 1) объявить потомка TImageList 2) в этом потомке переопределить метод TComponent.Notification 3) в этом методе проверять ссылки на этот компонент (т.е. на ImageList). И если количество ссылок на этот компонент равно нулю, то вызывать FreeAndNil(Self); и очищать поле этого компонента в классе-владельце (FMyImageList := nil;). Но тут проблема: поле FFreeNotifies компонента TImageList находится в разделе private и узнать какое существует количество ссылок на данный компонент не представляется возможным. Может есть какие-либо идеи как эту задумку реализовать «красиво»? |