初始化代码(例如加载 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 这是我唯一的形式(主要形式)。