有两个窗口from1,form2,from1作为主窗口,form2在创建的时候create的参数是nil,我把form2的parent的设为form1,
form1用showmadel的方式显示,但是我发现当我用form1。free的时候他会去释放form2,form2的拥有者不是他自己吗,
from1为什么会去释放??
form1用showmadel的方式显示,但是我发现当我用form1。free的时候他会去释放form2,form2的拥有者不是他自己吗,
from1为什么会去释放??
情况2: 如果控件是从TControl继承下来的,你设定了他的Parent,当这个Parent释放时,它会释放掉所有的子控件。
情况3:当最后AOwner释放它的Components时,从最后一个组件开始删除,这里这个组件也会删除它内部的Comonents,如果组件是TWinControl,则它会释放掉它所有的子控件。所以说,Aowner只是负责释放所有的不可视组件,和一部分的可视控件,大部分可视控件还是由Parent来释放的。 以上仅供参考
若你的容器中的控件是wincontrol,則會被加到FWincontrols列表中,若是control類型,則被加到Fcontrols列表中。
2、參考Twincontrol的銷毀方法,其中
I := ControlCount;
while I <> 0 do
begin
Instance := Controls[I - 1];
Remove(Instance);
Instance.Destroy;
I := ControlCount;//為controls.count+wincontrols.count
end;
这个应该是释放吧,
form2已经释放了,因为我在form1.free后又调用了form2.free,报错,我看了下form2的属性都是nil。
楼主可以参考一下上面的连接,里面分析的比较透彻