一般而言每一可見之元件有兩個父親, parent及owner. owner管此元件之Memory. Parent則管顯示.

Desintime時假設你在form1上先放一個panel1, 再在panel1上放一個edit1則Edit1之Owner為Form, parent為Panel, 故Panel Visible改為False, 則Edit也看不到了. Form則會管edit之Memory, 故Form Free時, edit也會自動被free.
[note] 此時, Form之Controls array不包含edit, 但Components array則包含edit. Panel之Controls Array包含此Edit

RunTime:
abc:=TEdit.Create(Self);傳入之參數為owner, 你必須另訂abc之parent否則不會顯示, 假設
abc.parent:=self;
則form之Controls, Components Array均含此Edit, Form管其顯示, 也負責其Memory.

RemoveComponent是不須的除非你在DELPHI IDE中寫Property Editor或Component Editor或 Expert否則不須呼叫此程序.

若Create時未給owner, 就必須自行Free

有owner, 雖然Memory由owner維護, 可以不須free, 但我以為養成良好習慣, RunTime自行Create, 還是自行Free較佳(此純為個人觀點)

你也可以將此元件之parent, 或owner設為其他之WinControl

如果你自己先將元件Free, 則Components, Controls array均會移除此元件, 不會重複free.
posted on 2008-09-30 15:15  yxbsmx  阅读(385)  评论(0编辑  收藏  举报