var
form1:Tform1;
begin
form1:=Tform1.create(nil);
form1.show;
////////
form1:=Tform1.create(Tform1);
form1.show;有什么区别?????????
form1:Tform1;
begin
form1:=Tform1.create(nil);
form1.show;
////////
form1:=Tform1.create(Tform1);
form1.show;有什么区别?????????
var
form1:Tform1;
begin
form1:=Tform1.create(nil);
form1.show;
////////
form1:=Tform1.create(form1);
form1.show;
有什么区别?????????
第二句的参数有问题,不能是Tform1(类型不对),必须是一个已存在的对象,比如form2,
form1:=Tform1.create(form2); 表示form1的拥有者是form2, 如果没有执行form1.free
的话,则form2关闭时会把form1释放掉。
form1.show;
不行哦,还是有内存泄漏哦???
form1:=Tform1.create(form1);
form1.show; 是不是相当于
form1:=Tform1.create(nil);
form1.show;
就和form1:=Tform1.create(self);一样啊
那Form1就是Button1的宿主,释放Form1的同时会同时释放Button1
应该是
form1:=Tform1.create(self);
或者
form1:=Tform1.create(application);
吧!create(nil)会造成如下问题:
1:在form1实例变量被覆盖后,无法再引用这个窗体的实例指针。
2:释放时,需要调用free;
create(self):
当self所指向的释放时,也释放form1
create(application):
程序结束时,自动释放form1