目前,在我的程序中,我有一个启动表单和一个主表单。启动表单显示一两秒。
现在,我在计时器中有以下代码:
frmStartup.Destroy;
frmMain := TfrmMain.Create(Self);
frmMain.Show;
现在,我不确定这是否是正确的方法。它有效,但是在调用 application.Terminate();
时
我收到一条访问冲突消息,让我相信我在破坏启动表单时做错了什么。
如果有人可以展示做我想做的事情的正确程序(非模态),我将不胜感激。
提前致谢,
编辑:
感谢所有反馈,我通过简单添加代码修复了访问冲突:
Action := caFree;
进入frmStartup.formClose方法。
最佳答案
不要使用Application.CreateForm
创建frmStartup
。在那里创建的第一个表单将成为应用程序的主表单,如果它是 frmStartup
,那么您将在 Application
知识之外销毁它。
相反,请在项目源 (.dpr) 文件中使用普通的 Form.Create:
var
frmStartup: TfrmStartup;
begin
Application.Initialize;
Application.MainFormOnTaskBar := True;
frmStartup := TfrmStartup.Create(nil); // No owner assigned here!
frmStartup.Show;
frmStartup.Update;
Application.CreateForm(TfrmMain, frmMain); // Let Application have this for main form
// Delay here if needed
frmfrmStartup.Free;
Application.Run;
end.
关于forms - 在 Delphi 中销毁一个窗体并显示另一个窗体的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9266130/