关于调用Form2(50分)

  • 主题发起人 主题发起人 longwx
  • 开始时间 开始时间
L

longwx

Unregistered / Unconfirmed
GUEST, unregistred user!
朋友们,你们好:
我想让程序一运行就弹出一个询问对话框,但我在Form1的OnCreate、OnShow、OnActivate、OnPaint时调用Form2.Show或Form2.ShowModal都发生
不同类型的失败,能告诉我为什么吗?该怎么做呢?
 
Form2是AutoCreate的吧?在Form1这些事件中,Form2尚未Create,当然会出错。
动态create form2就可以了
 
呵呵,当然出错,把form2作为mainform,关闭后SHOW真正的MAINFORM——FORM1
 
可是在OnActivate时调用可显示Form2,这说明Form2已被创建,但关闭Form2时显示
OnShow or OnHide时不能改变Visible
 
你可以先查看你的工程文件, *.Dpr
发现如下代码
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1); // 1#
Application.CreateForm(TForm2, Form2); // 2#
Application.Run;
end.

最常见的失败: Oncreate中调用Form2, 在#1位置时, 会产生Oncreate 事件,
但是Form2还未建立, form2处于未定义状态, 自然 Form2.show等过程会失败。

其他失败于此类似。

这样做:
Application.Initialize;
{-------这段代码也可以放在TForm1的Oncreate事件中-------}
with TForm2.create(application) do begin
try
showmodal;
finally
free ;
end;
end;
{------------------------------------------------------}
Application.CreateForm(TForm1, Form1); // 1#
// Application.CreateForm(TForm2, Form2); // 2# *---删除
Application.Run;



 
wuwu, 难怪我这么慢的呢 ,有三个人在往里冲。 :(;
 
多人接受答案了。
 
hehe
我进来前还有的,进来了就结束,呵呵,从提问到结束用29分钟。
 
后退
顶部