Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu Parent (https://www.delphipraxis.net/15211-frage-zu-parent.html)

Pseudemys Nelsoni 24. Jan 2004 06:58


Frage zu Parent
 
Moin,

ich habe einige memos,edits etc auf meinem TabSheet(Parent), wenn ich es nun freigebe(Free), sind dann die daraufliegenden kompos auch aus dem speicher gelöscht?
Also klappen tut es wunderbar, ich muss nur wissen obs richtig ist

Robert Marquardt 24. Jan 2004 08:13

Re: Frage zu Parent
 
Dafuer ist nicht die Parent-Beziehung sondern die Owner-Beziehung verantwortlich.
Der Owner ist dafuer verantwortlich die Komponenten zu loeschen, deren Owner er ist. Er bewahrt sie in der Property Components auf.

Parent ist eine Fenster-Beziehung. Also auf malt eine Komponente immer auf das Fenster seines Parents oder ihr eigenes Fenster ist ein Kind-Fenster des Patent-Fensters. Owner und Parent muessen nicht gleich sein. Das Aendern des Parent hat insbesondere Auswirkung auf die Tab-Reihenfolge.

Wird eine Komponente mit Free geloescht, so benachrichtigt sie mit der Methode Notification unter anderem ihren Owner damit er die Komponente aus seiner Liste austragen kann.

Pseudemys Nelsoni 24. Jan 2004 08:34

Re: Frage zu Parent
 
hoi, danke für die antwort, also muss ich den owner mit angeben? weil funktionieren tut es bis jetzt auch ohne

Jens Schumann 24. Jan 2004 10:56

Re: Frage zu Parent
 
Hallo
Zitat:

Zitat von Pseudemys Nelsoni
hoi, danke für die antwort, also muss ich den owner mit angeben? weil funktionieren tut es bis jetzt auch ohne

Wenn innerhalb der IDE die Memo's usw auf das TTabSheet legst ist alles Ok.
Zur Laufzeit musst Du z.B. das Memo mit
Delphi-Quellcode:
Memo1:=Memo1.Create(TabSheet1); // legt den Besitzer fest (wichtig für die Freigabe)
Memo1.Parent:=TabSheet1; // legt den Parent fest
erzeugen.

Wenn Du das Memo mit
Delphi-Quellcode:
Memo1:=Memo1.Create(Form1);
Memo1.Parent:=TabSheet1;
erzeugst ist das Formular der Besitzer des Memo's. D.h. das Memo wird erst freigegeben, wenn das Formualr freigegeben wird. Angezeigt wird das Memo aber auf dem TTabSheet. TTabSheet ist ja der Parent. Wenn Du das TabSheet jetzt freigibst verschwindet auch das Memo. Da das Memo hat ja keinen Parent mehr. Da man das Memo nicht mehr sieht könnte man auf die Idee kommen dass es freigegeben wurde. Das ist aber eine optische Täuschung.

Pseudemys Nelsoni 24. Jan 2004 11:08

Re: Frage zu Parent
 
hoi,

danke, das hilft mir weiter :). habe es nur gedacht, da ich das memo immer wieder erzeugen konnte (mit gleichem namen) ohne fehler


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz