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?
