Ekran powitalny - Splash Screen
Sheitar
Przed napisaniem jakiegokolwiek kodu należy wykonać kilka czynności:
- Dodać nową formę do projektu i zapisać ją pod nazwą np.
Screen
, a nazwa FormyFScreen
- Ustawić własności tej formy takie jak
BorderStyle
nabsNone
,Position
napoScreenCenter
, poukładać sobie tam obrazki czy kto co sobie życzy -
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.
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
Fajny art
Spox ;)
Fajne nawet bardzo fajne.
Dzięki za napisanie tego nie musze się sam męczyć:)
Przyda się! Kiedyś tego szukałem