Delphi中存储的“主窗体”名称在哪里?
哪个物理文件存储Delphi应用程序的主表单名称?
例如, MyApplication
有一个MyForm
格式,它通过Project选项设置为“主窗体”。 “Main Form = MyForm”信息实际存储在哪里?
在Delphi IDE中,通过菜单“ Project | Options | Forms
”指定应用程序“主窗体” Project | Options | Forms
Project | Options | Forms
。
明显的文件将是.bdsproj或.dpr,但似乎没有任何内容表明哪种格式是“主要”文件。
它在项目(.DPR)文件中。 以表单作为参数的第一次调用Application.CreateForm()可以识别应用程序的主窗体。
请注意,TDataModule不符合上述要求; 这实际上很有用,因为您可以在主表单之前自动创建一个datamodule,然后在主窗体的构造函数中访问该datamodule。
只是为了补充Ken White的答案。
如果您查看CreateForm的源代码:
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;
您会看到该函数(尽管它的名称)可用于创建其他组件。 但只有作为TForm的第一个组件才能成功创建,这可能是主要的形式。
然后对全局变量进行咆哮。
是的全局变量通常是错误的,但是对于应用程序对象和mainform对象,您可以创建一个异常。 尽管你可以忽略mainform的全局,但你需要自己编辑dpr文件:
更改:
begin
Application.Initialize;
Application.CreateForm(TMyMainForm, MyMainFormGlobal);
Application.Run
end.
至:
procedure CreateMain;
var
mainform : TMyMainForm;
begin
Application.CreateForm(TMyMainForm, mainform);
end;
begin
Application.Initialize;
CreateMain;
Application.Run
end.
你失去了所有的全球形式。
链接地址: http://www.djcxy.com/p/59655.html上一篇: Where is the "Main form" name stored in Delphi?
下一篇: How to compile and run this Delphi code without installing an IDE?