
Создание Splash-форм
Нередко при запуске Windows-приложений перед началом работы на экране появляется заставка (в англоязычной литературе она называется Splash screen или splash-форма), содержащая информацию о запускаемом приложении, логотип и некоторые другие сведения (серийный номер продукта, версия и пр.) и показывающая ход выполнения загрузки. При создании splash-форм используется несколько подходов. Рассмотрим один из них.
Пример 1. Создадим приложение, в котором перед появлением главного окна возникает заставка, состоящая из логотипа (картинки). Файл Логотип.jpg, содержащий изображение имеет размеры 256х256 (рис. 1.1). Создадим новый проект командой меню File/New/Application, и присвоим главной форме имя fmMain. Сохраним модуль формы fmMain под именем Main_un.pas, а сам проект — под именем Main. |
|
Добавим в проект еще одну форму (это окно и будет заставкой) и присвоим ее свойствам значения согласно табл. 1.1.
Таблица 1.1. Свойства проектируемой splash-формы
Свойство |
Установленное значение |
Назначение изменения |
Name |
fmSplash |
Новое имя формы |
BorderStyle |
bsNone |
Форма без заголовка и границы |
FormStyle |
fsStayOnTop |
Форма всегда размещается поверх других окон |
ClientHeight |
256 |
Клиентская высота формы |
ClientWidth |
256 |
Клиентская ширина формы |
Position |
poDesktopCenter |
Форма размещается по центру экрана |
Transparent Color |
true |
Указывает, что цвет, определенный в свойстве TransparentColorValue будет прозрачным |
Transparent ColorValue |
clWhite |
Задаем прозрачность только белому цвету |
Сохраним модуль формы fmSplash— под именем Splash_un.pas. В каталог с проектом поместим файл Логотип.jpg с изображением, которое будет являться логотипом программы.
Разместим на форме fmSplash компонент Image категории Additional, присвоим его свойству Align значение alClient (заполняет всю форму), свойству Proportional — значение true, свойству Center — значение true, в свойстве Picture укажем в качестве отображаемого файла файл Логотип.jpg.
Реализуем динамическое создание сплэш-формы перед созданием главной формы приложения. Для этого выполним команду меню Project/Options, в диалоговом окне Project Options выберем категорию параметров Forms, переместим форму fmSplash в список Available forms и нажмем кнопку ОК (этим действием мы переместим форму fmSplash из списка автоматически создаваемых форм в список доступных форм). Далее внесем изменения в содержимое файла проекта. Для этого выполним команду меню Project/View Source и добавим одну строку (добавленная строка выделена жирно в листинге) перед оператором создания главной формы:
program Main;
uses
Forms,
Main_un in 'Main_un.pas' {fmMain},
Splash_un in 'Splash_un.pas' {fmSplash};
{$R *.res}
begin
Application.Initialize;
fmSplash := TfmSplash.Create(nil);
Application.CreateForm(TfmMain, fmMain);
Application.Run;
end.
Суть этой корректировки заключается в том, что автоматически загружаются в оперативную память только те формы, которые создаются в файле проекта с помощью метода Application.CreateForm. Таким образом, хотя сплэш-форма и создается в файле проекта первой, она не будет распознана как главная форма приложения, поскольку для ее создания используется метод ТForm.Create.
Добавим в модуль Main_un ссылку на модуль Splash_un (можно воспользоваться меню File/Use unit):
implementation
uses Splash_un;
Для того, чтобы сплэш-форма отображалась в момент создания главной формы, создадим обработчик события fmMain.OnCreate:
procedure TfmMain.FormCreate(Sender: TObject);
begin
fmSplash.Show; //окно отображается немодальным
fmSplash.Repaint; //метод, заставляющий осуществить
//перерисовку формы
Sleep(5000); //задержка заставки на 5 сек
fmSplash.Hide; //метод, делающий форму невидимой
//можно было fmSplash.Close
fmSplash.Free; //освобождение памяти
end;