一个简单窗口问题,大家进来看看吧!(50分)

Q

qiushen

Unregistered / Unconfirmed
GUEST, unregistred user!
我建立了两个窗口,主窗口1, 窗口2,我要在进入窗口1之前运行窗口2,进行一
些,于是有我写了以下代码,可是运行的时候好像窗口2只是一闪而过,为什么没有等待?
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
form2.show;
// 如果加入 Application.run; 的话,关闭窗口2,程序就退出了,这是怎么回事?
form2.free;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
form2.showModal;
form2.free;
end;

如果是show的话,free不要加
 
不要在窗体的Create事件中调用
Application.CreateForm(TForm2, Form2);
你可以这样写
Form2 := TForm2.Create(Self);

你可以看一下,Application.CreateForm 的实现源代码,就明白为什么不能这么做了
 
你的窗口是被Application.CreateForm创建的
你再调用他,就会引起嵌套的调用,会有不可预料的后果
 
那如何在窗口中用命令关本窗口?
 
我的意思是说怎么样发出一条信息使本窗口关闭。
 
启动窗口的问题?论坛里多的很
 
多人接受答案了。
 
顶部