Вниз
Скачать: CL | DM;

Порядок удаления   Найти похожие ветки 

← →
Андреев Павел   (2003-05-23 13:27) [0]

Нельзя ли задать определенный порядок удаления компонент на форме?


← →
Skier ©   (2003-05-23 13:32) [1]

>Андреев Павел (23.05.03 13:27)
TComponent.ComponentIndex ?
А цель какая ?


← →
Андреев Павел   (2003-05-23 13:44) [2]

Компоненты содержат коллекции объектов, которые содержат интерфейсные указатели на объекты из других коллекций. Надоело мучаться над правильным освобождением этих ссылок. Если бы можно было задать порядок удаления комопнент, было бы чуть попроще.


← →
Юрий Федоров ©   (2003-05-23 13:46) [3]

можно удалять руками при разрушении формы.
Насколько я понимаю при вызове Label1.Free метка разрушится и будет исключена из списка Components своего владельца


← →
MBo ©   (2003-05-23 13:50) [4]

а не проще будет, если объект при разрушении будет уведомлять связанные с ним? Пример - TComponent.Notification c opRemove


← →
Андреев Павел   (2003-05-23 13:50) [5]

Юрий Федоров © (23.05.03 13:46)
можно удалять руками при разрушении формы.
Насколько я понимаю при вызове Label1.Free метка разрушится и будет исключена из списка Components своего владельца


Если пытаюсь удалять руками, то потом вылазит AccessViolation.


← →
Skier ©   (2003-05-23 13:53) [6]

>Андреев Павел (23.05.03 13:50)
У TComponent есть метод BeforeDestruction, в потомке его
можно перекрыть и там занулять все ссылки на него.


← →
Юрий Зотов ©   (2003-05-23 14:02) [7]

> Андреев Павел (23.05.03 13:44)

Ваши коллекции просто неверно написаны. Удаляемый элемент должен оповестить о своем удалении заинтересованные элементы, а те, получив уведомление, обнулить свои ссылки. И все. В компонентах для этого используются методы Notification, FreeNotificaton и RemoveFreeNotificaton, а для некомпонентских классов Вам нужно сделать аналогичный механизм.

Вот это будет грамотное, профессиональное решение. А делать форму зависимой от порядка создания/удаления - кустарщина.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
3-13001
VadimS
2003-05-19 15:02
2003.06.05
Невозможно изменить значение текущего поля


1-13313
Юрий Федоров
2003-05-23 10:39
2003.06.05
навесить обычную процедуру на обработчик события


1-13138
Intell
2003-05-25 22:13
2003.06.05
Как осуществить чтение из ресурса?


1-13211
zapmax
2003-05-27 11:37
2003.06.05
Кол-во страниц в QReport-е


14-13425
Дремучий
2003-05-15 19:13
2003.06.05
Если знаешь украинский - приколись!




   Наверх