![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Освобождение памяти [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 тут не причем.