Приложения , инициализация которых занимает приличное время, в этото время для пользователя демонстрируют «Окно приветствия (заставку)» с каким либо изображением. Основное назначение этого окна – отвлечь пользователя и помочь ему смириться с долгой загрузкой приложения.
Сейчасмы займёмся созданием приложения , которое будет создавать такое окно в течение всей инициализации, но не менее двух секунд (чтобы не раздражать пользователя).
Создадим новое приложение, добавим к нему вторую форму (File- New- Form) и отменим создание её экземпляра при запуске приложения (ProjectOptionsForms, переместите Form2 из списка Auto-create forms в список Available forms).
Теперь давайте оформим «Окно приветствия (заставку)» - в обработчике события OnCreate формы Form2 или в Инспекторе объектов. Поместим на форму компонент Image и в свойство Image.Picture загрузим какой нибудь рисунок. В окне приветствия избавимся от заголовка, для этого присвоим свойству формы BorderStyle значение bsNone. Так же установим свойство FormStyle значение fsStayOnTop, чтобы главное окно приложения «Окно приветствия (заставка) не перекрывало окно приветствия(заставку).
Для отображения окна заставки в центре экрана, присвоим свойству Position значение poScreenCenter.
Далее разместим на Form2 компонент Timer (он расположен на вкладке System) и обработаем событие OnCreate главного окна Form1 и событие OnTimer формы окна приветствия Form2:

 

procedure TForm1.FormCreate(Sender: TObject);
begin
Form2:= TForm2.Create(Self);
// отображаем форму заставки
Form2.Show;
//устанавливаем таймер на 2 сукунды
Form2.Timer.Interval:= 2000;
// запускаем таймер
Form2.Timer.Enabled:=true;
//далее следует код инициализации приложения
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
Release;
end;

Мы настроили и запустили таймер до начала инициализации приложения. Чере две секунды должно произойти событие OnTimer, но его обработчик Timer1Timer будет вызван только после завершения обработчика события OnCreate главной формы (Form1). И если инициализация займёт более двух секунд , то всё это время окно приветствия будет оставаться на экране.

Приложение  Delphi «Окно приветствия (заставка)»


 

Окно уничтожается , то есть освобождается память в обработчике Timer1Timer. Но обратите внимание , что мы вызываем метод формы Release, а не Free , как обычно. Использование метода Free было бы грубой ошибкой. А дело в том, что на момент вызова Free в очереди сообщений могут находится сообщения, предназначенные для уничтожаемого окна. Метод же Release гарантирует , что сначала будут обработаны все сообщения для этого окна, которые стоят в очереди, и только после этого начнётся освобождение памяти.
.
Скачать исходник ««Окно приветствия (заставку)» »:

 

Добавить комментарий


Защитный код
Обновить