如何在FireMonkey中创建启动画面?

时间:2012-01-31 12:13:50

标签: delphi-xe2 splash-screen firemonkey

我需要在我的FMX程序启动时创建启动画面。

VCL的以下代码不再有效:

SplashScreen := TSplashScreen.Create(Application);
SplashScreen.Show;
Application.Initialize;
SplashScreen.Update; //No such function in FMX
Application.Run;

问题是FMX表单在执行Application.Run之前不会被创建/重新绘制,因为它们使用一些FMX魔术来重绘。由于我需要OSX支持,因此不能使用VCL启动画面。

如何在Delphi XE2 FireMonkey项目中创建启动画面?

2 个答案:

答案 0 :(得分:4)

这样做 - 不同之处在于Application未成为启动窗口的Owner,并且在创建和显示启动窗口之前调用Application.Initialize,但直到启动启动窗口后才会创建主窗体。

program Project2;

uses
  FMX.Forms,
  System.SysUtils,
  Unit1 in 'Unit1.pas' {MainForm},
  Unit2 in 'Unit2.pas' {SplashForm};

{$R *.res}

begin
  Application.Initialize;
  SplashForm := TSplashForm.Create(nil);
  SplashForm.Show;
  Sleep(1000);   // Whatever to control display time of splash screen

  Application.CreateForm(TMainForm, MainForm);
  SplashForm.Close;
  SplashForm.Free;
  Application.Run;
end.

答案 1 :(得分:0)

您还可以添加单独的TLayout并根据需要填充它。这样做;

  • 初始布局必须将表单作为其直接所有者。
  • 表格的其余部分应该在它后面。并且应该启用表单透明度。
  • 在FormCreate事件中,您可以添加代码以执行必要的其他表单控件隐藏,如果将它们添加到单独的一组或一组布局中并隐藏它们,则可以轻松实现。
  • 您还需要一种触发事件来隐藏初始布局,并根据需要显示表单的其余部分。

注意:此方法虽然未在初始屏幕上显示标准表单按钮。

我已经做了很多次这样的事情,它证明了比制作一个单独的表格并与主表单一起处理它更安静。