Application.CreateForm与TForm.Create区别(10)

  • 主题发起人 主题发起人 ecjtuhr
  • 开始时间 开始时间
E

ecjtuhr

Unregistered / Unconfirmed
GUEST, unregistred user!
请教下,一下两段代码有什么区别?TForm.Create创建窗体:V_CKQuery := TV_CKQuery.Create(nil); [red] //注意此处[/red]try V_CKQuery.ShowModal;finally V_CKQuery.Free;end; Application.Run;=============================================Application.CreateForm创建窗体:Application.CreateForm(TV_CKQuery, V_CKQuery); [blue]//注意此处[/blue]try V_CKQuery.ShowModal;finally V_CKQuery.Free;end;Application.Run;
 
Application.CreateForm(TV_CKQuery, V_CKQuery);通过Application来创建,等效于:V_CKQuery:=TV_CKQuery.Create(Application);你可以Ctrl+鼠标左键点CreateForm进去看看
 
既然一样,那为什么启动窗体后窗体模式不一样呢,最小化窗体时就很明显了,一个在任务栏显示,一个不在任务栏,所以说是有区别的。
 
application建立的是项目级的窗口。由此创建的窗口被关闭时整个项目都将被关闭,即它创建的窗口为主窗口。而TV_CKQuery.Create(Application)创建的的只是项目中的一个对象,并把它的父级指像了Application而以,但它并不代表被被创建的窗体是此项目的主窗体。所以,你上面的两句中,由application创建的窗体最小化后任务栏上有显示,而第二种方法就没有显示,因为application并没有指定主窗体,而任务栏的显示内容是从主窗体中得来的,这只是我的理解而以。
 
VCL都有源码,还用得着问?
 
只有大家讨论,才能学得快,记得牢。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
905
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部