目前在我的程序中,我有一个Startup表单和一个Main表单.启动表单显示一两秒钟.
现在,我在计时器中有以下代码:
- frmStartup.Destroy;
- frmMain := TfrmMain.Create(Self);
- frmMain.Show;
现在,我不确定这是否是正确的方法..它有效,但在调用application.Terminate();
我收到一条访问违规消息,导致我相信我在破坏启动表单时做错了什么..
如果有人能够显示正确的程序来做我想要的(非模态),我将不胜感激.
提前致谢,
编辑:
- Action := caFree;
进入frmStartup.formClose方法.
解决方法
不要使用Application.CreateForm创建frmStartup.在那里创建的第一个表单将成为应用程序的主要表单,如果是frmStartup,则会在应用程序知识之外将其销毁.
而是在项目源(.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.