Unterschied zwischen Parent und Owner
-
Hallo, die Suche funzt grade nicht. Deshalb nehmt mir's nicht übel falls diese Frage schon mal woanders beantwortet wurde.
Kann mir jemand den Unterschied zwischen und/oder die Wirkung der Eigenschaft Parent und dem Argument Owner im Konstruktor von Komponenten erklären?
-
Parent bezieht sich immer auf sichtbare Komponenten. Wenn du zum Beispiel einer TMemo Instanz als Parent eine TPanel Instanz gibst, und bei deiner TMemo Instanz das Property Client auf alClient setzt, streched sich dein TMemo bei Grössenänderungen nicht über die ganze Form, sondern nur bis an die Seiten der TPanel Instanz, weil diese der Parent für die TMemo Instanz ist.
Owner bezieht sich auf alle Komponenten (die einen Owner haben können). Das ist dafür gedacht, dass alle "Kinder" beim beenden deines Programms gefreet werden können. hier ein auszug aus der hilfe:
Mit dieser Eigenschaft können Sie den Eigentümer einer Komponente ermitteln. Wenn eine Komponente einer anderen Komponente untergeordnet ist, wird ihr Speicher freigegeben, sobald der Speicher der übergeordneten Komponente freigegeben wird. Das bedeutet, daß alle Komponenten eines Formulars aufgelöst werden, wenn das Formular selbst aufgelöst wird.
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.
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 das Formular automatisch als deren Eigentümer zugewiesen.
viel spass
sewin
-
Das heißt dann also, dass wenn ich den Parent bei den sichtbaren Komponenten nicht extra angebe nachdem ich sie mit new erzeugt habe, die Komponenten nicht automatisch im Owner enthalten sind?
-
Genau das heisst es. Wenn du Parent nicht angibst sind sie dann auch nicht zu sehen.
-
Ach deswegen... Vielen Dank für die Hilfe
Sprotti
-
Sprotti schrieb:
Das heißt dann also, dass wenn ich den Parent bei den sichtbaren Komponenten nicht extra angebe nachdem ich sie mit new erzeugt habe, die Komponenten nicht automatisch im Owner enthalten sind?
Falsche Formulierung! Nein, der Owner hat damit nichts zu tun. Du kannst einem sichbaren Objekt (Control), welches du auf einem Panel (das Parent) von Form1 erstellst, den Owner Form2 geben. Das Parent ist das Fenster (auch ein Panel ist ein Fenster), auf dem dein Control gezeichnet wird. Der Owner ist z.B. dafür verantwortlich, das Control beim Löschen wieder freizugeben.