在创建多形式VCL应用程序时,使用TApplication.CreateForm()创建的表单的状态是什么?是否调用WinAPI将它们设置为不可见状态,还是由某些VCL内部工作处理?
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2); // Invisible
Application.CreateForm(TForm3, Form3); // Invisible
Application.Run;
答案 0 :(得分:5)
使用Application.CreateForm()
创建的第一个表单将成为应用程序的MainForm
,Application.Run()
如果Application.ShowMainForm
为真,将自动显示该表单, MainForm的WindowState
不是wsMinimized
,并且未使用指定的SW_SHOWMINNOACTIVE
标记创建该进程。
Application.CreateForm()
创建的所有其他表单只有在Visible
属性设置为True
时才会自动显示。默认情况下,IDE会将辅助表单的Visible
属性设置为False
。
请注意,在应用程序启动时自动创建所有表单通常不是一个好主意。您应该从“项目选项”中的自动创建列表中删除第二个和第三个表单,然后在实际需要时在代码中动态创建它们。您甚至可以将IDE设置为默认情况下不自动创建辅助表单。