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

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

Освобождение памяти [D7, XP]


slavon ©   (2008-02-03 15:11:00) 

Доброго дня, Мастера! Мне требуется кое-что уточнить.
В real-time делаю: Panel1 := TPanel.Create(nil);
Создаю на ней кучу всякого добра:
<newComponent> := <TComponent>.Create(Panel1);
Достаточно ли после этого всего одной строчки: Panel1.Free;?
Пока писАл, возник второй вопрос:
Если разбросать все эти новые компоненты по разным Parent'ам:
<newComponent>.Parent := <otherComponent>;
удалить всё можно будет, введя только: Panel1.Free;?


slavon   (2008-02-04 00:51:00) [1]

Ага. Понятно. Интересные тонкости. Я поясню: у меня во время работы программы нужно изменить состав и св-ва компонентов, созданных на Panel1. Думаю, будет проще всё снести и заново загрузить. Потому они все на панели. Спасибо.


Григорьев Антон   (2008-02-03 20:14:00) [2]


> DVM ©   (03.02.08 15:17) [1]
> За удаление отвечает Owner если он есть. Parent тут не причем.

Parent тоже уничтожает компоненты, для которых он Parent. Так что компонент может быть уничтожен как при уничтожении Parent'а, так и при уничтожении Owner'а, т.е. Parent не совсем не при чём.


Anatoly Podgoretsky   (2008-02-03 16:52:00) [3]

От добра зависит.


DVM   (2008-02-03 15:41:00) [4]


> Причем, если он есть.

Я про его код. Он же Parent - ов вроде уничтожать не собирался.


slavon   (2008-02-03 15:25:00) [5]

Ура. Спасибо, тем кто откликнулся.


Leonid Troyanovsky   (2008-02-03 15:22:00) [6]


> DVM ©   (03.02.08 15:17) [1]

> За удаление отвечает Owner если он есть. Parent тут не причем.

Причем, если он есть.

--
Regards, LVT.


DVM   (2008-02-03 15:17:00) [7]


> В real-time делаю: Panel1 := TPanel.Create(nil);

Ты хотел сказать в RUN-TIME?


> Достаточно ли после этого всего одной строчки: Panel1.Free;
> ?

Да. Только не забудь, что саму твою панель надо уничтожить явно, т.к. при ее создании Owner у тебя nil


> Если разбросать все эти новые компоненты по разным Parent'ам:
>
> <newComponent>.Parent := <otherComponent>;
> удалить всё можно будет, введя только: Panel1.Free;?


За удаление отвечает Owner если он есть. Parent тут не причем.


Наверх

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