Нередко при запуске 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;