问题
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.
回答1:
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.
回答2:
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;
回答3:
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.
来源:https://stackoverflow.com/questions/3378605/how-to-show-this-splash-screen-for-3-seconds