//代码一
program Project1;uses
Forms,
MainForm in 'MainForm.pas' {Form1},
MyClass_Unit in '..\MyClass_Unit.pas';{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);///////////
Application.Run;
end.//代码二
program Project1;uses
Forms,
MainForm in 'MainForm.pas' {Form1},
MyClass_Unit in '..\MyClass_Unit.pas';{$R *.res}begin
Application.Initialize;
Form1 := TForm1.Create(Application);///////
Application.Run;
end.
//无效回答无分
program Project1;uses
Forms,
MainForm in 'MainForm.pas' {Form1},
MyClass_Unit in '..\MyClass_Unit.pas';{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);///////////
Application.Run;
end.//代码二
program Project1;uses
Forms,
MainForm in 'MainForm.pas' {Form1},
MyClass_Unit in '..\MyClass_Unit.pas';{$R *.res}begin
Application.Initialize;
Form1 := TForm1.Create(Application);///////
Application.Run;
end.
//无效回答无分
解决方案 »
- 请各位帮忙纠正下这几段代码!!!
- 谢特,vclsmp70.bpl和vcljpg70.bpl被卡巴干掉了。
- strtoint 很奇怪!
- 在同一个程序中,两个过程会不会相互干扰?
- 限制应用服务器的连接数
- 一个很小很小的问题,对不起抢来的两颗星,见笑了:)
- 如何取得MDB库中的表名???
- 关于用delphi开发opengl
- 真烦!!paradox的date类型字段要求格式为mm/dd/yyyy,但delphi的datetimepicker控件得到的字段值的格式却是yyyy-mm-dd,各位有没有什么好办法解决?
- 紧急求援!想把主窗体永远在最后面,其它以后打开的窗体在前面,应怎么设置?
- VB、DELPHI学习群,欢迎大家进入!!
- 谁有完成端口通讯程序的Delphi源码?
代码1运行后显示form1
这段代码调用了TApplication类的CreateForm方法,这个方法的内部实现原理是:先调用NewInstance来为对象分配内存,再创建对象,然后判断如果Form1如果是应用程序的主窗体的话,就创建Form1的窗口句柄,然后显示出来。
而Form1 := TForm1.Create(Application);///////
就不一样了,它只是创建了Form1对象,此时Form1还没拥有句柄,不是一个有效的Win32窗口。
所以结果是:方法一显示出了Form1,而方法二没有效果,它只创建了Form1对象。
procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference);
var
Instance: TComponent;
begin
Instance := TComponent(InstanceClass.NewInstance); //为对象分配内存等操作
TComponent(Reference) := Instance;
try
Instance.Create(Self); //创建窗口对像,此时无句柄
except
TComponent(Reference) := nil;
raise;
end;
if (FMainForm = nil) and (Instance is TForm) then //判断是否存在主窗口
begin
TForm(Instance).HandleNeeded; //创建主窗口句柄
FMainForm := TForm(Instance); //设置创建的对象为应用程序主窗口
end;
end;