开发者

How to show this splash screen for 3 seconds?

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 sh开发者_如何学运维owing the main form.

Please help. Thanks.


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.


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;


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜