Как показать этот заставки за 3 секунды? - PullRequest
4 голосов
/ 31 июля 2010

Я создал заставку, используя метод, упомянутый здесь: http://delphi.about.com/od/formsdialogs/a/splashscreen.htm

Мне нужно показать заставку в течение 3 секунд, прежде чем показывать основную форму.

Пожалуйста, помогите. Спасибо.

Ответы [ 3 ]

6 голосов
/ 01 августа 2010

Внутри файла проекта:

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.

Внутренний блок заставки:

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.

Заставка будет видна минимум 3 секунды и более, если создание всех форм вашего приложения займет больше времени.

3 голосов
/ 31 июля 2010

Чтобы достичь желаемого, вы можете следовать методу, описанному в предоставленной вами ссылке, и в коде формы заставки вы устанавливаете таймер, который срабатывает через 3 секунды и закрывает форму.

Основной файл .dpr

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;

В форме, которая будет «заставкой», добавьте таймер, включенный с интервалом 3000 (3 с)

со следующим обработчиком событий

procedure TForm2.Timer1Timer(Sender: TObject);
begin
  Self.Close;
end;
1 голос
/ 31 июля 2010

Вы должны использовать таймер, интервал которого вы установите на 3000 (3 (с) * 1000 (мс)).Включено должно быть установлено в true.В событие таймера по умолчанию вы добавляете код, предназначенный для отображения основной формы.

...