2009-08-16 1 views
1

Чтобы избежать более сложного решения, когда кадр вызывает некоторую процедуру в родительской форме, чтобы форма могла убить фрейм ... Мне было интересно, просто ли установить форму в качестве родителя фрейма и позволить Delphi вызвать Frame .Если пользователь закрывает приложение?Отсутствует утечка памяти при настройке формы в качестве родителя кадра?

procedure TForm1.FormShow(Sender: TObject); 
var 
    Frame2 : TFrame2; 
begin 
    //Frame2 := TFrame2.Create(nil); 
    Frame2 := TFrame2.Create(Self); 
    Frame2.Align := alClient; 
    Frame2.Parent := Self; 
    Frame2.Visible := True; 
end; 

спасибо.

ответ

12

На самом деле вы путаете родитель и владелец:

Владелец передается в качестве параметра конструктора и будет заботиться о освобождении компонента, родитель управления, который содержит элемент управления визуально.

Пример:

Вы получили форму, панель на этой форме и ярлык на этой панели: форма, как правило, является владельцем панели и этикетки. Форма является родительским элементом панели, а панель является родителем метки.

Что касается вашего вопроса: вполне нормально передать форму, которая содержит рамку в качестве владельца. Когда форма будет освобождена, она также освободит фрейм. Кроме того, вы должны установить родительский элемент для какого-либо другого элемента управления, чтобы рамка стала видимой. Конечно, это может быть и форма, но это не повлияет на освобождение кадра.

+0

+1 Отличный ответ! –

+0

Спасибо, но в случае выше, где кадр отображается непосредственно в форме, а не через Panel или PageControl ... не является владельцем, а родителем является форма в обоих случаях? В этом примере я предполагаю, что кадр будет освобожден из ОЗУ, когда приложение будет существовать. Я просто хотел проверить, что я могу использовать это более простое решение. – Gulbahar

+0

Да, если оба родителя и владельца являются формой, форма в ее роли Владелец освободит фрейм. – dummzeuch

1

Чтобы быть кристально ясно:
- The Владелец отвечает за существования его принадлежащих компонентов и освобождает их, когда она разрушает себя (они являются частью владельца и не может существовать без него).
- The Родитель отвечает показывая свои ребенок (контроля - без Родитель их Visible свойства имеет никакого эффекта), и как таковой будет также свободно его контроль, когда он разрушает сам, потому что никто не смог бы показать их больше.

Смежные вопросы