AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Eltern haften für ihre Kinder (dynamisch erstellte Controls)
Thema durchsuchen
Ansicht
Themen-Optionen

Eltern haften für ihre Kinder (dynamisch erstellte Controls)

Ein Thema von Guido Eisenbeis · begonnen am 14. Apr 2007 · letzter Beitrag vom 16. Apr 2007
 
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#1

Eltern haften für ihre Kinder (dynamisch erstellte Controls)

  Alt 14. Apr 2007, 23:35
In diesem Topic geht es um das Freigeben von zur Laufzeit dynamisch erstellter Controls. Sind die Eltern (Parent/Owner) für ihre Kinder (Child/Controls) verantwortlich?

Wird zum Beispiel ein TButton zur Laufzeit erstellt, so wird ihm unter anderem ein Owner zugewiesen.

Delphi-Quellcode:
MyButton := TButton.Create(self); // Owner zuweisen
MyButton.Parent := self; // Parent zuweisen
...
In einigen Tutorials wird gesagt, man solle zur Laufzeit erstellte Controls selbst wieder freigeben.
Beispiel: Komponenten zur Laufzeit erstellen

Die OnlineHilfe sagt zum Thema Owner:

Zitat:
[Delphi] property Owner: TComponent read FOwner;

Beschreibung

Mit dieser Eigenschaft können Sie den Eigentümer einer Komponente ermitteln. Der Eigentümer ist für zwei Aufgaben zuständig:

Die untergeordnete Komponente wird bei der Freigabe des Eigentümers automatisch aus dem Speicher entfernt. Das bedeutet, dass alle Komponenten eines Formulars zusammen mit dem Formular freigegeben werden.

...

Standardmäßig ist ein Formular allen in ihm enthaltenen Komponenten übergeordnet. Dem Formular wiederum ist die Anwendung übergeordnet. Daher wird der Speicher für das Formular (und alle untergeordneten Komponenten) freigegeben, wenn die Anwendung geschlossen und deren Speicher freigegeben wird. Wird ein Formular in den Speicher geladen, lädt es alle in ihm enthaltenen Komponenten.

Der Eigentümer einer Komponente wird von dem Parameter bestimmt, der beim Erzeugen der Komponente an den Konstruktor übergeben wird. Bei Komponenten, die im Formular-Designer erzeugt werden, wird automatisch das Formular als Eigentümer (Owner) zugewiesen.
Ist das expliziete Freigeben von dynamisch erzeugten Controls notwendig oder nicht?
Anders gefragt: Werden dynamisch erzeugte Controls bei Programmende automatisch im Speicher freigegeben?


Guido.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz