Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Самоуничтожение компонента [D6, Win95/98]


I_S_ ©   (2002-10-14 09:42:00) 

Создаю компонен, состоящий из нескольких. По нажатию на один их них, должен уничтожаться весь компонент. Наподобии обычной формы - по нажатию на "крестик". Выхываю свой destroy, получаю ситуацию, что некуда вернуться по окончанию. Как с этим бороться?
Заранее благодарен.


Zemal   (2002-10-14 13:14:00) [1]

>>qube
Спасибо за замечание! Действительно я преукрасил :). Написал так, как сам себе "представляю для простоты" :). Реализация методов TObjectList позволяет так "думать"(образно представлять) :). А упомянуть про свойство OwnsObjects вообще забыл :). Извиняюсь. В действительности это, конечно, список ссылок на объекты :), которые можно контролировать методами класса TObjectList, в том числе и уничтожать, при уничтожении самой переменной этого класса, централизованно и автоматически. Извиняюсь за неточности.


qube   (2002-10-14 12:35:00) [2]

Zemal © (14.10.02 12:01)
Прошу прощения, маленькое уточнение. Такого явления, как "не ссылки на объект, а сами объекты" в Object Pascal попросту нет. TObjectList -- это обычный список указателей, наследник TList, только он рассматривает все указатели как указатели на TObject и, если свойство OwnsObjects = True, в деструкторе убивает все объекты, которые в списке содержатся.


Zemal   (2002-10-14 12:01:00) [3]

Можно воспользоваться классом TObjectList, это потомок класса TList и хранит в своих Items не ссылки на объект, а сами объекты... плюсы в том, что он хорошь как контейнер объектов и удаляет все свои подчинённые объекты и освобождает память. Только один нюанс: придётся создавать объекты динамически... и если это визуальные компоненты, то незабыть указать свойство Owner (иначе их небудет видно, т.к. негде их отображать). Если интересует как это можно сделать - могу помочь.


Vitaly   (2002-10-14 09:51:00) [4]

Правильнее будет, по-моему, не самоуничтожение,
а освобождение неиспользуемых ресурсов диспетчером.
Например, в application.onIdle.
Если же очень хочется - тогда PostMessage(...) владельцу
на уничтожение.

Удачи.


Наверх

Титульная страница Поиск, карта сайта Написать письмо