No nie, tak to nie będzie działać. Według mnie też najlepszym miejscem na takie zabiegi jest główny plik projektu, dlatego że można się pobawić splashem zanim zostanie utworzony obiekt głównego okna programu i pozostałe formularze (jeśli tworzone są automatycznie).
Schemat jest dość prosty:
var
Splash: TSplashForm;
begin
if DebugHook = 1 then
ReportMemoryLeaksOnShutDown := True;
Splash := TSplashForm.Create(nil);
try
Splash.Show();
// tutaj wstrzymywanie pracy programu np. przez 5 sekund
//
// dla przykładu może to być pętla wywołująca na przemian
// Sleep(50) i Application.ProcessMessages, aby splash
// odbierał komunikaty i w razie potrzeby mógł zostać przemalowany
finally
Splash.Free();
end;
Application.Initialize();
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run();
end.
Przy czym zabawę z wizytówką warto przenieść do jakiejś zewnętrznej procedury lub dorobić sobie helper do klasy TApplication
, aby składnia obsługi splasha była ładna i czytelna.
Pamiętać należy, że okno wizytówki musi być zsynchronizowane z pętlą odliczającą, tak aby nie dało się zamknąć go przed upływem określonego czasu. Bo nawet jeśli okno splasha nie będzie posiadało obramowania to w dalszym ciągu da się je zamknąć kombinacją Alt+F4. Wystarczy proste zabezpieczenie:
procedure TSplashForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := False;
end;
Nie mówię, że to najlepsze rozwiązanie, jednak jest dość proste w implementacji. Z okienka wizytówki można wycisnąć o wiele więcej, jednak podstawowa funkcjonalność dla Ciebie jak na początek spokojnie wystarczy.