Programowanie w języku Delphi » Gotowce

Ekran powitalny - Splash Screen

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.

17 komentarzy

Brak avatara
SaimON 2013-10-27 14:08

Powiedzcie jak zrobić, by na FScreen Tguage ładował się do 100% i potem forma by się wyłączała i wskakiwała by ta główna?

blazej222 2013-02-22 23:34

Ej ludziska gdzie ustawic ile sekund ma trwac dany napis?

Arthi 2010-12-03 17:55

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

Arthi 2010-12-03 12:12

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

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

Henryk555 2009-10-29 18:48

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

maciejplonski 2007-10-12 22:23

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

lukasz1235 2007-09-14 13:41

To jest super!!

Coldpeer 2006-01-30 17:22

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

dzikimisiu 2005-12-30 15:42

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

Gharlon 2005-11-23 18:48

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

Waldi 2004-04-29 16:43

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

paweb 2003-03-03 09:20

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

Radzio3 2002-12-30 11:27

Fajne nawet bardzo fajne.

Pik 2002-12-30 01:42

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

Sebek 2002-11-17 19:45

Przyda się! Kiedyś tego szukałem