2009-08-16 3 views
1

Um die kompliziertere Lösung zu vermeiden, wo der Frame eine Routine im Elternformular aufruft, damit das Formular den Frame auslöschen kann ... Ich frage mich, ob es in Ordnung ist, das Formular als Elternteil des Frames zu setzen und Delphi Frame aufrufen zu lassen .Free, wenn der Benutzer die Anwendung schließt?Kein Speicherverlust beim Festlegen der Form als übergeordnetes Element des Rahmens?

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; 

Vielen Dank.

Antwort

12

Eigentlich sind verwirrend Sie Eltern und Inhaber:

Der Eigentümer als Parameter an den Konstruktor übergeben wird und die Komponente der Befreiung kümmern, das übergeordnete ist die Steuerung, die visuell das Steuerelement enthält.

Beispiel:

Sie ein Formular erhalten haben, ein Panel auf dem Formular und ein Etikett auf dieser Platte: Die Form ist in der Regel der Eigentümer der Platte und dem Etikett. Das Formular ist das übergeordnete Element des Bedienfelds und das Bedienfeld ist das übergeordnete Element des Etiketts.

Wie für Ihre Frage: Es ist vollkommen in Ordnung, das Formular, das den Rahmen als Eigentümer enthält, zu übergeben. Wenn das Formular freigegeben wird, wird es auch den Rahmen freigeben. Außerdem müssen Sie das übergeordnete Element auf ein anderes Steuerelement festlegen, damit der Rahmen sichtbar wird. Das kann natürlich auch die Form sein, aber das hat keinen Einfluss auf die Freigabe des Frames.

+0

+1 Große Antwort! –

+0

Danke, aber in dem Fall oben, wo der Rahmen direkt auf dem Formular statt durch ein Panel oder ein PageControl angezeigt wird ... ist nicht der Eigentümer und das Elternteil das Formular in beiden Fällen? In diesem Beispiel nehme ich dann an, dass der Rahmen aus dem RAM freigegeben wird, wenn die Anwendung existiert. Ich wollte nur überprüfen, ob ich diese einfachere Lösung verwenden kann. – Gulbahar

+0

Ja, wenn Eltern und Besitzer das Formular sind, wird das Formular in seiner Rolle als Besitzer den Rahmen freigeben. – dummzeuch

1

Um glasklar:
- Der Besitzer ist verantwortlich für die Existenz seiner eigenen Komponenten und befreit sie, wenn sie sich zerstört (sie sind Teil des Besitzers sind und nicht existieren kann, ohne es).
- Die Elternteil ist verantwortlich für seine Kinder zeigt (Kontrollen - ohne Eltern ihre Eigenschaft Visible keine Wirkung hat) und als solche wird auch seine Kontrollen frei, wenn er zerstört sich selbst weil niemand zu zeigen, wäre in der Lage sie mehr.

Verwandte Themen