重複の可能性:
スプラッシュ スクリーン
データベース接続 (時間がかかる場合があります) の実行中にスプラッシュ スクリーンをプログラムで表示する
INI ファイルのロードなどのコードを初期化するのに最適な場所はどれですか? 最初にフォームを画面に表示して、アプリが読み込まれていることをユーザーに知らせ、その後のみ LoadIniFile や IsConnectedToInternet などの長い関数を呼び出したい (最後の関数は非常に遅い)。
フォームがまだ準備できておらず、画面に表示されないため、OnCreate は適切ではありません。
私はこれをDPRで行いますが、常に機能するとは限りません:
program Test;
begin
Application.Initialize;
Application.Title := 'Test app';
Application.CreateForm(TfrmTest, frmTest);
frmTest.Show; <---------------------- won't show
LateInitialize;
Application.Run;
end.
LateInitialize (4 ~ 5 秒) が実行されるまで、フォームは表示されません。
procedure LateInitialize;
begin
CursorBussy;
TRY
// all this won't work also. the form won't show
frmTest.Visible:= TRUE;
Application.ProcessMessages;
frmTest.Show;
Application.ProcessMessages;
frmTest.BringToFront;
frmTest.Update;
Application.ProcessMessages;
DoSomethingLengthy; {4-5 seconds}
FINALLY
CursorNotBussy;
END;
end; <--------- Now the form shows.
はい、frmTest は私の唯一のフォーム (メイン フォーム) です。