В моем приложении у меня есть изображение всплеска во время соединения с базой данных и другой инициализацией. Он отлично работает, чтобы показать изображение всплеска, но там пустое время. So,Отображение заставки несколько секунд
- Изображение брызг загружается и отображается на долю секунды.
- Всплескное изображение получилось пустым 2-3 секунды.
- Всплеск изображения снова отображается несколько секунд.
- Всплеск закрыт.
Есть ли умная вещь, чтобы просто показать изображение как можно быстрее и удалить пустое изображение?
код в DPR-файле:
Application.Initialize;
SplashForm := TSplashForm.Create(Application);
SplashForm.Show;
// Tried Splash.Update here but no difference.
SplashForm.SetPos(15);
// Init code
SplashForm.SetPos(30);
// More Init code
SplashForm.SetPos(100);
SplashForm.Close;
Application.Run;
И блок разбрызгивания:
procedure TSplashForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TSplashForm.FormCreate(Sender: TObject);
begin
pbLoading.Properties.Text := 'Loading ' + TClientConfig.Instance.AppTitle + '...';
end;
procedure TSplashForm.SetPos(aPos: Integer);
begin
pbLoading.Position := aPos;
UpDate;
end;
С уважением Roland
Фактическое обновление() будет делать то же самое синхронно. цикл сообщений уже существует в этой точке, но поток VCL не имеет возможности рисовать уже недействительное окно. –
Спасибо. Звучит правильно, но это не имеет никакого значения. Кажется, что что-то занимает много времени и очищает splashimage. –
ProcessMessages() не ждет. HandleMessage() делает –