关于关闭有模Form的怪问题(100分)

S

Slong

Unregistered / Unconfirmed
GUEST, unregistred user!
这问题捆扰了我很长一段时间了:
假如程序MyApp有三个Form,分别命名为frmMain、frmForm1和frmForm2。
其中frmMain是主窗口,我现在frmMain中ShowModal frmForm1,然后再在
frmForm1中ShowModal frmForm2,如果我现在把frmForm2关闭掉,奇怪的
是frmForm1也不见了(只是隐藏起来),只要把焦点移到其他程序(如资
源管理器)后再把焦点移回MyApp,frmForm1就出来了,真奇怪!但这种现
象是偶尔才发生的,不是每次都有。而且我还发现,在低档的机器上发生的
机会多一点(如P100,16M以下)。真奇怪!不知是Delphi的问题还是我的
问题呢?
不知那一位遇到过同样问题?我的具体程序如下:
在frmMain中:
procedure TfrmMain.Button1Click(Sender: TObject);
begin
Application.CreateForm(TfrmForm1, frmForm1);
frmForm1.ShowModal;
frmForm1.Free;
end;

在frmForm1中:
procedure TfrmForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TfrmForm2, frmForm2);
frmForm2.ShowModal;
frmForm2.Free;
end;

在frmForm2中:
procedure TfrmForm2.Button1Click(Sender: TObject);
begin
Close;
end;
 
>frmForm1.Free;
>frmForm2.Free;
干嘛要Free呢?
 
>>不知是Delphi的问题还是我的问题呢?
应该都没问题呀
 
没什么奇怪现象。
要不你把close换成modalresult:=100看看,瞎猜的不知结果会不会一样
 
不是隐藏起来,而是form1跑到frmmain下面去了,你把form2做的大一点就看到他在
frmmain下面了.
这是 delphi 处理form的问题
 
我以前也遇到过,重新作了一边就没问题了,建议将目录下所有自动
生成的文件扇了再试
 
改为:
try
form1 := TForm1.Create(self)
form1.showmodal;
finally
form1.free;
end
若还不行;在form2的onclose事件中:
if assign(form1) then
bringtotop(form1.handle)
原理大概这样。
 
如Chenlili所述,不要用Application.CreateForm(TfrmForm1, frmForm1);
改为form1 := TForm1.Create(self)应该就可以了
因为Application.CreateForm得到的Form的Owner是Application,
而form1 := TForm1.Create(self)得到的Form的Owner是frmMain
 
Pipi.说的没错,我的程序出现Exception消息框就如Slong的那中现象!
 
chenlili和wWolf各50分
 
顶部