Создание собственного окна загрузки в Delphi 10 Seattle
Вопрос пользователя заключается в том, как создать собственное окно загрузки (splash screen) в Delphi 10 Seattle, вместо использования стандартного изображения PNG через опции проекта. Это может быть полезно для создания более персонализированного и интерактивного приветственного экрана для вашего приложения.
Описание проблемы
Пользователь столкнулся с трудностями при попытке реализации собственного окна загрузки в Delphi 10 Seattle. Он нашел решение для предыдущей версии (XE2), но оно не работает в новой версии среды разработки. Пользователь предоставил несколько примеров кода, которые он пытался использовать в своем проекте, но они не привели к желаемому результату.
Контекст и решение проблемы
В контексте предоставленной информации важно отметить, что в FireMonkey, который используется в Delphi 10 Seattle, можно изменять основной формы приложения во время выполнения. Это означает, что окно загрузки должно быть показано сначала, затем выполнены все необходимые задачи, и только после этого происходит переход к основной форме приложения.
Подтвержденный ответ
Для создания собственного окна загрузки в Delphi 10 Seattle, следует использовать следующий подход:
Создайте форму окна загрузки в среде разработки.
В методе FormCreate формы окна загрузки, отключите таймер, который будет использоваться для переключения на основную форму.
В методе SplashImagePaint включите таймер, который будет контролировать время показа окна загрузки.
В обработчике события таймера, после завершения загрузки, отключите таймер и переключитесь на основную форму.
В методе LoadMainForm создайте основную форму и сделайте ее основной формой приложения, после чего закройте окно загрузки.
Вот пример кода для формы окна загрузки:
procedure TFormSplash.FormCreate(Sender: TObject);
begin
StartupTimer.Enabled := false;
StartupTimer.Interval := 500; // Время показа окна загрузки можно изменить
end;
procedure TFormSplash.SplashImagePaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
begin
StartupTimer.Enabled := not FInitialized;
end;
procedure TFormSplash.StartupTimerTimer(Sender: TObject);
begin
StartupTimer.Enabled := false;
if not FInitialized then begin
FInitialized := true;
LoadMainForm;
end;
end;
procedure TFormSplash.LoadMainForm;
var
form: TForm;
begin
form := TMainForm.Create(Application);
form.Show;
Application.MainForm := form;
Close;
end;
Альтернативный ответ
В дополнение к вышеуказанному, важно помнить о следующих моментах:
Включите форму окна загрузки в обычный процесс загрузки основного приложения.
Используйте функцию Application.ProcessMessages для показа пользователю, что приложение создает форму.
Не запускайте процедуры в событии OnCreate основной формы, за исключением скинирования или инициализации скина. Вызовите их снова в файле DPR после создания основной формы.
Отключите основную форму после ее создания, чтобы пользователь не мог взаимодействовать с ней, пока не будет скрыто окно загрузки.
Следуя этим инструкциям, вы сможете создать собственное окно загрузки, которое будет отображаться перед основной формой вашего приложения в Delphi 10 Seattle.
Пользователь хочет научиться создавать собственное окно загрузки в среде разработки Delphi 10 Seattle, чтобы приложение имело персонализированный и интерактивный приветственный экран.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS