Создание splash-заставки

Создание splash-заставки 

Brutus

Думаю многие знают, что такое splash-картинка, но все же поясню: это картинка, которая предшествует запуску основной программы и обычно отображается во время загрузки программы, что бы пользователю было не так скучно ждать, пока загрузится программа. Подобную splash-картинку можно наблюдать во время запуска Delphi, TheBat!, Dreamveawer и др. Сейчас мы займемся созданием красивой splash-заставки для вашей программы.

Зачем?

Как я уже говорил, заставка может скрасить ожидание запуска программы. К тому же на заставке можно показывать какие ни будь полезные данные или информацию о степени загрузки программы. Да и это просто красиво. Так же обращю ваше внимание, что заставка должна хорошо выглядеть, поскольку именно она оставляет первое впечатление о программе (надеюсь все знают силу первого впечатления, которое потом тяжело изменить). Так же нужно дать пользователю отключать заставку в настройках, поскольку заставка может просто не понравиться или раздражать пользователя, и он удалит программу только из-за злополучной заставки.

Как?

Очень просто. Нужно найти подходящюю картинку, разместить необходимые компоненты (если вы хотите что ни будь отображать на заставке) на форме и написать несколько строк кода.

Итак, приступим. Создайте новую форму и расположите на ней картинки и компоненты. Эта форма и будет отображаться во время загрузки программы. Допустим эта форма называется Form2. Рекомендую её свойство BorderStyle установить в bsNone - в этом режиме заголовок окна не будет отображаться, к тому же нельзя будет изменить размер окна. Так же рекомендую изменить свойство этой формы Position и установить как poScreenCenter - в этом случае окно появится в центре экрана. Далее в событии главной формы (обычно Form1) onShow пропишите Form2.ShowModal. Это откроет окно Form2 в модальном режиме. Теперь нужно сделать так, что бы заставка закрылась. Это можно сделать, добавив на форму заставки таймер, который закроет программу, или же добавив код закрытия заставки после инициализационных действий в главной форме, загрузки параметров и т.п.

Теперь давайте попробуем как ни будь удивить пользователя. Самый простейший способ, это показать некоторые данные о компьютере в заставке. Расположите несколько label'ов на форме-заставке или прямо на картинке (в этом случае нужно установить свойство Label.Transparent := true). Следующий код записывает в Label1 информацию о пользователе, на которого зарегистрирована ОС. Этот код нужно расположит в обработчике события OnCreate формы-заставки, так же не забудьте поместить модуль TRegistry в раздел Uses все той же формы-заставки:

var Reg : TRegistry; 

begin 

Reg := TRegistry.Create; 

Reg.RootKey:=HKEY_LOCAL_MACHINE; 

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', False); 

Label1.Caption:=Reg.ReadString('RegisteredOwner'); 

Reg.CloseKey; 

Reg.Free; 

end;

Если вы уловили идею, то сможете превратить из заставки настоящюю SysInfo :). Следующий способ должен впечатлить пользователя больше, чем предыдущий. При активации форма будет плавно появляться и исчезать. Я уже писал статью 'Анимация без лишних усилий', там рассказывается об анимации окон стандартными winapi функциями и анимации путем манипулирования свойствами формы. Прочитайте обьязательно! В той статье были описаны свойства формы AlphaBlend и AlphaBlendValue. Манипулируя с ними в обыкновенном цикле можно достичь очень неплохих результатов. Если вы прочтете ту статью, то ваша заставка может впечатлить даже искушенного пользователя. Я не буду пихать в эту статью материал, изложенный в другой статье, но добавлю, что если вы хотите, что бы заставка при закрытии также плавно исчезала, то подставьте в цикле вместо слова to слово downto и поменяйте местами начальные и конечные значения (100 и 255 в примере статьи).

Вместо заключения

Хочу сказать, что не нужно бояться эксперементировать, и в этих эксперементах потерять драгоценное время, ведь именно в подобных эксперементах рождаются потрясающие результаты. К тому же цель этой статьи дать не готовые примеры для использования, а дать пищу для мозгов, натолкнуть программиста на интересные факты. Представьте, что вы на уроке химии: смешивайте примеры, добавляйте что ни будь свое, исправляйте и будьте уверены, что вы не будете жалеть о потраченном времени.