Ekran powitalny - Splash Screen

Sheitar

Przed napisaniem jakiegokolwiek kodu należy wykonać kilka czynności:

  1. Dodać nową formę do projektu i zapisać ją pod nazwą np. Screen, a nazwa Formy FScreen
  2. Ustawić własności tej formy takie jak BorderStyle na bsNone, Position na poScreenCenter, poukładać sobie tam obrazki czy kto co sobie życzy
  3. Project -> View Source i do dzieła
    Odpowiednio modyfikując kod źródła projektu można osiągnąc sukces
begin
  FScreen:=TFScreen.Create(nil);
  FScreen.Show;
  Application.Initialize;
  FScreen.Update;
  Application.CreateForm(TFMain, FMain);
  // tutaj ładowanie, albo zwłoka
  FScreen.Destroy;
  Application.Run;
end.

W miejsce ładowania możemy wstawić wywołanie do funkcji, które będą tworzyć obiekty itp, można też te tworzenie wstawić do OnCreate głównej Formy. Możemy też wstawić Sleep (wtedy do uses trzeba dopisać Windows).

Aby uatrakcyjnić ekran powitalny możemy do niego dodać pasek postępu ewentualnie napis informujący użytkownika co się dzieje. Wstawiając na formę FScreen np. Gauge i Label można uzyskać taki efekt, wystarczy teraz zajrzeć znów do źródła projektu.

begin
  FScreen:=TFScreen.Create(nil);
  FScreen.Show;
  Application.Initialize;
  FScreen.Update;
  Application.CreateForm(TFMain, FMain);
  FMain.Tworz1;
  FScreen.Gauge1.Progress := FScreen.Gauge1.Progress+1;
  FScreen.Label1.Caption := 'Tworzę obiekt #1';
  FScreen.Update;
  FMain.Tworz2;
  FScreen.Gauge1.Progress := FScreen.Gauge1.Progress+<font color=#0000FF>1</font>;
  FScreen.Label1.Caption := 'Tworzę obiekt #2'</font>;
  FScreen.Update;
  FMain.Tworz3;
  FScreen.Gauge1.Progress := FScreen.Gauge1.Progress+1;
  FScreen.Label1.Caption := 'Tworzę obiekt #3';
  FScreen.Update;
  FMain.Tworz4;
  FScreen.Gauge1.Progress := FScreen.Gauge1.Progress+1;
  FScreen.Label1.Caption := 'Tworzę obiekt #4';
  FScreen.Update;
  FScreen.Destroy;
  Application.Run;
end.

Jak widać za każdym razem wykonywane są trzy podobne polecenia, więc można je przerzucić do opowiedniej procedury w module Screen.

procedure TFScreen.Ustaw(Opis: string);
begin
  Gauge1.Progress := Gauge1.Progress + 1;
  Label1.Caption := Opis;
  Update; // konieczne żeby odswieżyć zawartość labela
end;

Nie zapominając o dodaniu jej do public

public
   procedure Ustaw(Opis: string);

Teraz źródło projektu będzie wyglądało schludniej

begin
  FScreen := TFScreen.Create(nil);
  FScreen.Show;
  Application.Initialize;
  FScreen.Update;
  Application.CreateForm(TFMain, FMain);
  FMain.Tworz1;
  FScreen.Ustaw('Tworzę obiekt #1');
  FMain.Tworz2;
  FScreen.Ustaw('Tworzę obiekt #2');
  FMain.Tworz3;
  FScreen.Ustaw('Tworzę obiekt #3');
  FMain.Tworz4;
  FScreen.Ustaw('Tworzę obiekt #4');
  FScreen.Destroy;
  Application.Run;
end.

16 komentarzy

Ej ludziska gdzie ustawic ile sekund ma trwac dany napis?

oki już zrobiłem, ale jak teraz pozbyć się koloru formy???

było by ok, gdyby nie cholerny błąd:

failed to create win32 control, error 1407:Nie można odnaleźć klasy okna

Ech ludziska ludziska Czasami ktoś napisze arta że rzuc na kolana, ale czasami chyba pisał niedospany :)
Z szacunkiem JA :)

hehe, a mi działa dopiero gdy usunąłem FScreen.destroy; :]

To jest super!!

dzikimisiu: wiadomo, że to nie zadziała :) Bo nigdzie nie deklarowałeś zapewne żadnej procedurki czy czegoś o nazwie TworzN

mi niedziała pokazuje [Error] Project1.dpr(15): Undeclared identifier: 'Tworz1' i tak do wszystich

To samo znajdziemy w Help'ie Delphi dodatkowo z wstawieniem ProgressBar'a na nasze okno powitalne...
Ale leniwym ten artykuł pomoże :P

Jednak jak wstawi sie np jakąś procedure z parametrem sender to troche nie działa

dlaczego mi to nie działa.Co musze wstawić w ładowanie

Fajne nawet bardzo fajne.

Dzięki za napisanie tego nie musze się sam męczyć:)

Przyda się! Kiedyś tego szukałem