【问题标题】:Delphi xe3 Mainform hideDelphi xe3 Mainform 隐藏
【发布时间】:2013-01-18 21:15:32
【问题描述】:

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

【问题讨论】:

  • 如果您不告诉我们运行时错误是什么,“我得到运行时错误”绝对没有意义。发帖时请记住,我们无法看到您的屏幕或读懂您的想法,因此您需要具体并在此处提供您的问题的详细信息。如果您不向我们提供用于帮助您的信息,我们将无济于事。 :-)

标签: forms delphi hide firemonkey delphi-xe3


【解决方案1】:

在 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.

【讨论】:

【解决方案2】:

更简单的方法 - 覆盖 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多