Delphi xe3 Mainform隐藏

时间:2013-01-18 21:15:32

标签: forms delphi hide firemonkey delphi-xe3

我一直试图用hiden主表单启动我的应用程序,但没有运气。它 编译和一切,但当我运行它时,我得到运行时错误。当我使用计时器并将其设置为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.

2 个答案:

答案 0 :(得分:6)

在FireMonkey应用程序中,自动创建的表单(已创建)和MainForm属性在Application.Run方法中指定。因此导致访问冲突的原因是MainForm属性和form1变量为零。

要访问此类属性,您必须先执行RealCreateForms方法

begin
  Application.Initialize;
  Application.CreateForm(TForm2, Form1);
  Application.RealCreateForms;
  //Application.MainForm.Left:=-Application.MainForm.Width;
  Application.MainForm.Visible:=False;
  Application.Run;
end.

答案 1 :(得分: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;