Похожий вариант создания заставки можно посмотреть здесь.
Создайте отдельную форму. Назовите, например, Splash («заставка»). Выставите свойство BorderStyle в bsNone. Форма должна быть по центру экрана (св-во Position в poDesktopCenter).
Разместите на форме Image и загрузите в него картинку. Киньте на форму компонент Timer. Он будет отвечать за продолжительность показа заставки.
Форму-заставку нужно создавать самостоятельно в программе, а не автоматически. Сначала перейдите в меню Project > Options. В появившемся окне на странице Forms перенесите нужную форму в список Available Forms. Теперь заставка не будет создаваться автоматически.
Перейдите в редактор кода (Project > View Source). Измените строки. У меня они выглядят так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}, Unit3 in 'Unit3.pas' {Form3}, Unit4 in 'Unit4.pas' {Splash}; // форма - заставка {$R *.res} begin Splash :=TSplash.Create(Application); //инициализация заставки Splash.Show; Splash.Update; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm3, Form3); Splash.Hide; Splash.Free; Application.Run; |
В моем проекте три формы и конечно же заставка должна выводится на экран до появления главной формы. Этот код это и реализует.
Теперь о задержке заставки на экране…
Значение Interval для таймера выставите 3000 мс., Enabled — true.
Для события OnTimer пропишите:
1 2 3 4 5 6 7 8 9 10 11 |
procedure TSplash.Timer1Timer(Sender: TObject); begin Timer1.Enabled :=false; //отключаем таймер по окончанию времени end; Для определения возможности закрытия формы в событии OnFormCloseQuery procedure TSplash.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose :=Timer1.Enabled=false; //ждем окончания работы таймера end; |
И наконец, убираем заставку с экрана…
1 2 3 4 5 6 7 8 |
procedure TSplash.FormHide(Sender: TObject); begin repeat Application.ProcessMessages; until Splash.CloseQuery; end; end. |