请教下,一下两段代码有什么区别?
TForm.Create创建窗体:
V_CKQuery := TV_CKQuery.Create(nil); //注意此处
V_CKQuery.ShowModal;
finally
V_CKQuery.Free;
end;
Application.Run;
=============================================
Application.CreateForm创建窗体:
Application.CreateForm(TV_CKQuery, V_CKQuery); //注意此处
try
V_CKQuery.ShowModal;
finally
V_CKQuery.Free;
end;
Application.Run;
TForm.Create创建窗体:
V_CKQuery := TV_CKQuery.Create(nil); //注意此处
V_CKQuery.ShowModal;
finally
V_CKQuery.Free;
end;
Application.Run;
=============================================
Application.CreateForm创建窗体:
Application.CreateForm(TV_CKQuery, V_CKQuery); //注意此处
try
V_CKQuery.ShowModal;
finally
V_CKQuery.Free;
end;
Application.Run;
而用TForm.Create的话,可以指定owner
我是这么理解的
以D7为例
1、Application.CreateForm产生的对象是经由TObject.NewInstance,最终由InitInstance函数生成(System单元)
2、TForm.Create产生的对象则是通过MakeObjectInstance函数(Classes单元)感兴趣可以自行探寻一下
如果不自动生成窗体的话,Application会将Application.CreateForm产生的第一个Form默认为主窗体