Как создать заставку в FireMonkey? - PullRequest
3 голосов
/ 31 января 2012

Мне нужно создать заставку во время запуска моей программы FMX.

Следующий код из VCL больше не работает:

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

Проблема в том, что в FMX формы не создаются/ перекрашивается, пока не выполнится Application.Run, так как для перекраски они используют магию FMX.Использование заставки VCL не является вариантом, поскольку мне нужна поддержка OSX.

Как создать заставку в проекте Delphi XE2 FireMonkey?

Ответы [ 2 ]

4 голосов
/ 31 января 2012

Это работает - разница в том, что 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.
0 голосов
/ 16 августа 2013

Вы также можете добавить отдельный TLayout и заполнить его по своему желанию. Для этого

  • У макета-заставки должна быть форма в качестве непосредственного владельца.
  • Остальная часть формы должна быть за ней. И прозрачность формы должна быть включена.
  • В событии FormCreate вы можете добавить код для необходимого скрытия других элементов управления формы, что может быть легко сделано, если вы добавите их в отдельный отдельный набор или набор макетов и вместо этого скроете их.
  • Вам также потребуется своего рода триггерное событие для скрытия макета-заставки и отображения остальной части формы по вашему желанию.

Примечание: При таком подходе стандартные кнопки формы не отображаются на заставке.

Я делал это много раз, и это оказалось намного проще, чем создание отдельной формы и обработка ее вместе с основной формой.

...