自建FORM,如何释放此FORM(50分)

  • 主题发起人 主题发起人 apex
  • 开始时间 开始时间
A

apex

Unregistered / Unconfirmed
GUEST, unregistred user!
在主FORM中写以下代码:
form2 := Tform2.Create(self);
form2.parent:= self;
在FORM2中的按钮中加代码想释放FORM2,如何办到,用FORM2.FREE窗口去不掉,用RELEASE
和CLOSE,DESTORY等都会出错.到底该怎么办?
 
nobody answer?!
 
这样写,试一下:
主Form中,
From2 := TForm2.Create(Application);
Form2.Show;
在Form2中这可以用Free释放了。
 
试过:JohnsonGuo的方法,可行。
但为什么用CREAT(SELF)却不能?
有谁能解答?
 
Self是指处于当前模块下的对象的引用。
你写的语句处理TForm1所在的单元模块,所以Self是Form1的实例。
而TForm2应该是Application的实例,而不应该是Form1的实例。
 
我copy你的代码怎么没出问题?
BTW,记住在form2.onclose中加上Action:=caFree;如果你是想释放form2
 
其一你的FORM2没有SHOW你是如何知道它不能被FREE呢?
form2:=Tform.Create(self);
form2.show;
form2.free;
是可行的
其二你的FORM2 不需要执行form2.parent:= self;

procedure TForm1.Button1Click(Sender: TObject);

begin
form2:=Tform.Create(self);
form2.show;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form2.close;//或FREE,RELEASE均可
end;

 
标准Delphi程序至少有两个窗体,TApplication和TForm1(你的MainForm);
self相当于c++中this指针。代表正在使用的这个类的当前实例。
试一试,感受一下:)
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := Format('%p %p',[Pointer(Form1),Pointer(Self)]);
end;
 
接受答案了.
 
后退
顶部