关于动态创建,释放窗体的问题.(100分)

  • 主题发起人 主题发起人 yukuang
  • 开始时间 开始时间
Y

yukuang

Unregistered / Unconfirmed
GUEST, unregistred user!
请问动态创建的FORM的OWNER属于Application或nil有什么区别?谁给具体讲讲?
我有代码如下:
with TForm2.Create(Application) do
beign
ShowModal; //我的意思是在窗体关闭后释放.
Free; |--------------------------------------------------------
end; |
|
但在TForm2的实例(比如:Form2中)我又动态的创建了Form3 |
|
即: |
procedure TForm2.Button1Click(Sender:TObject) |-----------
begin |
A:Close; (此时我想调用TForm2的方法关并释放Form2,即---)
with TFrom3.Create(Application)
begin
ShowModal;
Free;
end;
end;


但是在以上的A处Close方法调用后并不关闭释放Form2,而是继续执行下面创建Form3的代码,请问该如何达到我

的要求?
 
你可以这样:

procedure TForm2.Button1Click(Sender:TObject)
begin
hide; (此时我想调用TForm2的方法关并释放Form2,即---)
with TFrom3.Create(Application)
begin
ShowModal;
Free;
end;
close;
end;
 
怎么忘了消息了,在创建FORM3的时候保存它的句柄,然后在释放时SENDMESSAGE;
应该不用我多说了吧!
 
FORM3向FORM2发WM_CLOSE
 
楼上方法可行
 
方法有很多,自己去试试就知道了。
 
1:因为Form2是模式窗口(showModal)
pie代码中关闭Form3后,Form1是关闭不掉的,不知怎么解决?
yuKuang在动态创建FORM2又动态的创建了Form3,好象多此一举^-^
2:动态创建的FORM的OWNER不属于任何控件
如 :Form1.edit1.text:=Form2.owner.Name(文本显示为‘’).
至于nil是一个指针,动态窗口没创建前(如from2)是nil,创建后就不是nil.
给form2:=nil 的主要作用是避免多次创建动态窗口(尤其在创建无模式窗口。form2.show)
 
正是因为,种种原因, 所以我先Hide; 这样就在最后,再CLOSE!

 
To:拓荒国.

我不知老兄你是理解能力差还是大脑有问题.
"yuKuang在动态创建FORM2又动态的创建了Form3,好象多此一举^-^"

多此一举是什么意思?我想再创建一个窗体,不知老兄有什么高见?
 
楼上几位的方面基本可以解决你的问题了,如果对上述回答满意,可以结束问题,
否则请提前问题或发表意见
 
with TForm2.Create(Application) do
beign
ShowModal;
end;
procedure tform2.destrory;
begin
action:=cafree;
end;
procedure TForm2.Button1Click(Sender:TObject)
begin
Close;
with TFrom3.Create(Application)
begin
ShowModal;
Free;
end;
end;
以上应该可以.


 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
716
import
I
后退
顶部