4

我一直在尝试使用隐藏的主窗体启动我的应用程序,但没有运气。它编译一切,但当我运行它时,我得到运行时错误。当我使用计时器并将其设置为 1 毫秒然后调用Application.MainForm.Hide它隐藏但它闪烁时我不希望这种情况发生

program Project1;
uses
  FMX.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.MainForm.Visible := false;
  Form1.Visible:=false;
  Application.Run;
end.
4

2 回答 2

6

在 FireMonkey 应用程序中,自动创建的表单(被创建)并MainForm在方法中分配属性Application.Run。所以访问冲突是由于MainForm属性和form1变量为 nil 而引起的。

为了访问这些属性,您必须先执行该RealCreateForms方法

begin
  Application.Initialize;
  Application.CreateForm(TForm2, Form1);
  Application.RealCreateForms;
  //Application.MainForm.Left:=-Application.MainForm.Width;
  Application.MainForm.Visible:=False;
  Application.Run;
end.
于 2013-01-19T15:17:58.950 回答
0

更简单的方法 - 覆盖 CanShow:

type
  TfrmMain = class(TForm)
  public
    function CanShow: Boolean; override;
  end;

...

function TfrmMain.CanShow: Boolean;
begin
  Result := False; // Or return True when it's OK to show
end;
于 2019-05-05T01:40:27.577 回答