Нередко при запуске Windows-приложений перед началом работы
на экране появляется заставка (в англоязычной литературе она называ-
ется Splash screen или splash-форма), содержащая информацию о за-
пускаемом приложении, логотип и некоторые другие сведения (серий-
ный номер продукта, версия и пр.) и показывающая ход выполнения
загрузки. При создании splash-форм используется несколько подходов.
Рассмотрим один из них.
Пример 1. Создадим приложение, в котором
перед появлением главного окна возникает за-
ставка, состоящая из логотипа (картинки). Файл
Логотип.jpg, содержащий изображение имеет
размеры 256х256 (рис. 1.1).
Рис. 1.1. Изображение с логотипом
Создадим новый проект командой меню
File/New/Application, и присвоим главной
форме имя fmMain. Сохраним модуль формы
fmMain под именем Main_un.pas, а сам проект
— под именем Main.
Добавим в проект еще одну форму (это окно и будет заставкой) и
присвоим ее свойствам значения согласно табл. 1.1.
Таблица 1.1. Свойства проектируемой splash-формы
Сохраним модуль формы 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;
Автор: Соколова Ю.С.
|