пятница, 5 июня 2015 г.

Splash Screen или заставка к своему приложению

   Давненько не писал ничего в блог, постоянная занятость, мешает сосредоточиться на написании статей. И вот сегодня хочу поделиться с теми кто не знает, как при запуске своей программы сделать заставочку, как во многих крутых программулинах, от фирм типа Adobe или например Corel.
  1) Для начала запустим новый проект и создадим дополнительную форму (Form2). Form2 и будет у нас как раз той самой заставочкой, потому в ее свойстве Position - выбираем значение ScreenCenter,  а в свойстве BorderStyle выбираем None, чтобы убрать рамку.

  2) Помещаем на нашу Form2, 1 - Timer, 1 - ProgressBar и 1 - Image; Компонент Image, растягиваем по размеру формы, в него будем подгружать картинку нашей заставки.


Как видно размер заставки которую буду делать я, составляет 497 на 226 пикселей.

  3) Далее заходим, в Project > Options > Form где выделяем нашу Form2, и переносим ее
как на скрине ниже:


из раздела Auto-create forms: в Avialable forms: и жмем Ok.

 4) В менеджере проектов, находим наш проект, - Project1.exe, кликаем на нем правой клавишей и выбираем свойство View Source, после чего открывается файл самого проекта:

 

    Все что нужно теперь сделать, это заменить содержимое между begin и end, файла проекта на код написанный ниже:

  Application.Initialize;
  Form2 := TForm2.Create(Application);
  Form2.Show;
  Form2.Update;
  While Form2.Timer1.Enabled do
  Application.ProcessMessages;
  Application.CreateForm(TForm1, Form1);
  Form2.Hide;
  Form2.Free;
  Application.Run;

  То есть, при инициализации, запускается Form2, и только после того как останавливается наш таймер, она закрывается и открывается Form1 с основной программой.

 5) Теперь приступим к настройке компонентов и созданию изображения. Свойство Interval таймера ставим в 1000 и на его событие Timer1Timer пишем:

procedure TForm2.Timer1Timer(Sender: TObject);

var
a:integer;

begin

ProgressBar1.Position:=ProgressBar1.Position+5;
If (ProgressBar1.Position=ProgressBar1.Max) Then
Timer1.Enabled:=False;

end;

   Код надеюсь пояснять не надо. Тут реализована стандартная привязка ProgressBar к таймеру. Таймер остановился, заставка закрылась, программа запустилась.
Лучше приступим к творческой части. Для этого запускаем фотошоп и создаем файл по размерам нашей заставки, (как я упоминал ранее у меня он составляет 497 на 226 пикселей). В заданных размерах, создаем себе картиночку и сохраняем ее в папке с проектом в формате .png
  Теперь, выделяем Image, и свойством Picture, подтягиваем нашу картинку. Запускаем проект и любуемся.

  У меня получилось так (на скорую руку))


   Как только ProgressBar достигает отметки 100%, таймер останавливается, заставка пропадает и появляется главная форма. Скорость задержки регулируйте свойством Position компонента ProgressBar и Interval компонента Timer.

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.