Reputation: 7436
I need to create a splashscreen while my FMX program is launching.
The following code from VCL does not works anymore:
SplashScreen := TSplashScreen.Create(Application);
SplashScreen.Show;
Application.Initialize;
SplashScreen.Update; //No such function in FMX
Application.Run;
Problem is that in FMX forms are not created/repainted until Application.Run
executed, as they use some FMX magic to repaint. Using VCL splashscreen is not an option since I need OSX support.
How do I create a splashscreen in Delphi XE2 FireMonkey project?
Upvotes: 3
Views: 7501
Reputation: 2423
You can also add a separate TLayout and populate it as you desire. To do so;
Note: This approach though doesn't show the standard form buttons on the splash screen.
I have done this many a times and it proves to be quiet less complicated than making a separate form and handling it alongside the main form.
Upvotes: 0
Reputation: 125767
This works - the difference being that the Application
isn't made the Owner
of the splash window, and that Application.Initialize
is called before the splash window is created and displayed, but the main form isn't created until after the splash window is showing.
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.
Upvotes: 4