Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Уничтожение компонентов


Автор: кмс 11.4.2015, 12:28
Создаю в run-time Panel1 и на ней Image1. Потом их надо уничтожить.
Достаточно ли уничтожить только Pahel или нужно Image тоже?

Автор: Romikgy 11.4.2015, 12:37
все то же самое но в обратном порядке! (убьете только панель получите утечки памяти)

Автор: kami 11.4.2015, 22:32
Цитата(Romikgy @  11.4.2015,  12:37 Найти цитируемый пост)
 (убьете только панель получите утечки памяти) 

Ээээ... не согласен.
Если мы говорим о VCL, то установка Parent вносит этот компонент в список Controls этого самого Parent-а (там есть варианты, в зависимости от того TWinControl это или нет). А в деструкторе TWinControl явно прописано уничтожение всех "дочерних" компонентов: 
Код

while I <> 0 do
  begin
    Instance := Controls[I - 1];
    Remove(Instance);
    Instance.Destroy;
    I := ControlCount;
  end;

В FMX ситуация примерно такая же.
Посему - если Image с панели никто не убирал - то вполне можно уничтожать только панель, этого более чем достаточно.

Автор: Doga 6.7.2015, 15:09
Привет.

Если не ошибаюсь, то для автоматического освобождения надо установить свойство Owner <> Nil. 

Но помоему, дабы не нарушать отчётность, лучше всё удалить самому ("я тебя породил - я тебя и убью" ) - меньше вероятность запутаться... 

Автор: northener 7.7.2015, 03:05
Цитата(кмс @  11.4.2015,  12:28 Найти цитируемый пост)
Создаю в run-time Panel1 и на ней Image1. Потом их надо уничтожить.
Достаточно ли уничтожить только Pahel или нужно Image тож

Для ответа нужно видеть код как создаёшь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)