私のアプリケーションでは、データベースへの接続やその他の初期化中にスプラッシュイメージがあります。スプラッシュイメージを表示するのにうまく動作しますが、そこにはピリオドが空白です。 だから、スプラッシュイメージが数秒間空白になっています
- スプラッシュイメージがロードされ、秒単位で表示されます。
- スプラッシュ画像が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;
よろしく ローランド
実際にUpdate()は同じ同期を実行します。メッセージループはその時点で既に存在しますが、VCLスレッドは無効化済みのウィンドウを描画する機会はありません。 –
ありがとうございます。それは右のように聞こえるが、違いはない。何かが長い時間を要し、スプラッシュイメージをクリアするようです。 –
ProcessMessages()は待機しません。 HandleMessage()は –