Hello,
I created my splash screen using the method mentioned here: http://delphi.about.com/od/formsdialogs/a/splashscreen.htm
I need to show the splash screen for 3 seconds before showing the main form.
Please help. Thanks.
Hello,
I created my splash screen using the method mentioned here: http://delphi.about.com/od/formsdialogs/a/splashscreen.htm
I need to show the splash screen for 3 seconds before showing the main form.
Please help. Thanks.
You should use a timer, whose interval you set to 3000 (3(s) * 1000(ms)). Enabled must be set to true. On the Timer's-default-event you add the code, which is meant to show the main form.
To achieve what you want you can follow the method described in the link you provided, and on The splash screen's form code you put a timer which gets fired after 3 seconds and closes the form.
Main .dpr file
var SplashScreen : TForm2;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
SplashScreen := TForm2.Create(nil); // Creating with nil so this is not registered as main form
try
SplashScreen.ShowModal; // Blocking the execution for as long as this form is open
finally
SplashScreen .Free;
end;
Application.CreateForm(TForm1, Form1);
Application.Run;
On the form which will be the 'splash screen' add the timer, enabled at 3000 interval (3s)
with the following event handler
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Self.Close;
end;
Inside project file:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
uSplashScreen in 'uSplashScreen.pas' {frmSplashScreen};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
frmSplashScreen := TfrmSplashScreen.Create(nil);
try
frmSplashScreen.Show;
// Create your application forms here
Application.CreateForm(TForm1, Form1);
while not frmSplashScreen.Completed do
Application.ProcessMessages;
frmSplashScreen.Hide;
finally
frmSplashScreen.Free;
end;
Application.Run;
end.
Inside splash screen unit:
unit uSplashScreen;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TfrmSplashScreen = class(TForm)
Timer1: TTimer;
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
Completed: Boolean;
end;
var
frmSplashScreen: TfrmSplashScreen;
implementation
{$R *.dfm}
procedure TfrmSplashScreen.FormShow(Sender: TObject);
begin
OnShow := nil;
Completed := False;
Timer1.Interval := 3000; // 3s minimum time to show splash screen
Timer1.Enabled := True;
end;
procedure TfrmSplashScreen.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
Completed := True;
end;
end.
The splash screen will be visible for minimum time of 3 seconds or more if it will take more time to create all the forms of your application.