Brutus
Думаю многие знают, что такое splash-картинка, но все же поясню: это картинка, которая предшествует запуску основной программы и обычно отображается во время загрузки программы, что бы пользователю было не так скучно ждать, пока загрузится программа. Подобную splash-картинку можно наблюдать во время запуска Delphi, TheBat!, Dreamveawer и др. Сейчас мы займемся созданием красивой splash-заставки для вашей программы.
Зачем?
Как я уже говорил, заставка может скрасить ожидание запуска программы. К тому же на заставке можно показывать какие ни будь полезные данные или информацию о степени загрузки программы. Да и это просто красиво. Так же обращю ваше внимание, что заставка должна хорошо выглядеть, поскольку именно она оставляет первое впечатление о программе (надеюсь все знают силу первого впечатления, которое потом тяжело изменить). Так же нужно дать пользователю отключать заставку в настройках, поскольку заставка может просто не понравиться или раздражать пользователя, и он удалит программу только из-за злополучной заставки.
Как?
Очень просто. Нужно найти подходящюю картинку, разместить необходимые компоненты (если вы хотите что ни будь отображать на заставке) на форме и написать несколько строк кода.
Итак, приступим. Создайте новую форму и расположите на ней картинки и компоненты. Эта форма и будет отображаться во время загрузки программы. Допустим эта форма называется Form2. Рекомендую её свойство BorderStyle установить в bsNone - в этом режиме заголовок окна не будет отображаться, к тому же нельзя будет изменить размер окна. Так же рекомендую изменить свойство этой формы Position и установить как poScreenCenter - в этом случае окно появится в центре экрана. Далее в событии главной формы (обычно Form1) onShow пропишите Form2.ShowModal. Это откроет окно Form2 в модальном режиме. Теперь нужно сделать так, что бы заставка закрылась. Это можно сделать, добавив на форму заставки таймер, который закроет программу, или же добавив код закрытия заставки после инициализационных действий в главной форме, загрузки параметров и т.п.
Теперь давайте попробуем как ни будь удивить пользователя. Самый простейший способ, это показать
var Reg : TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('SOFTWAREMicrosoftWindowsCurrentVersion', False);
Label1.Caption:=Reg.ReadString('RegisteredOwner');
Reg.CloseKey;
Reg.Free;
end;
Если вы уловили идею, то сможете превратить из заставки настоящюю SysInfo :). Следующий способ должен впечатлить пользователя больше, чем предыдущий. При активации форма будет плавно появляться и исчезать. Я уже писал статью 'Анимация без лишних усилий', там рассказывается об анимации окон стандартными winapi функциями и анимации путем манипулирования свойствами формы. Прочитайте обьязательно! В той статье были описаны свойства формы AlphaBlend и AlphaBlendValue. Манипулируя с ними в обыкновенном цикле можно достичь очень неплохих результатов. Если вы прочтете ту статью, то ваша заставка может впечатлить даже искушенного пользователя. Я не буду пихать в эту статью материал, изложенный в другой статье, но добавлю, что если вы хотите, что бы заставка при закрытии также плавно исчезала, то подставьте в цикле вместо слова to слово downto и поменяйте местами начальные и конечные значения (100 и 255 в примере статьи).
Вместо заключения
Хочу сказать, что не нужно бояться эксперементировать, и в этих эксперементах потерять драгоценное время, ведь именно в подобных эксперементах рождаются потрясающие результаты. К тому же цель этой статьи дать не готовые примеры для использования, а дать пищу для мозгов, натолкнуть программиста на интересные факты. Представьте, что вы на уроке химии: смешивайте примеры, добавляйте что ни будь свое, исправляйте и будьте уверены, что вы не будете жалеть о потраченном времени.