形式 – 在Delphi中销毁表单并显示另一个表单的正确方法

前端之家收集整理的这篇文章主要介绍了形式 – 在Delphi中销毁表单并显示另一个表单的正确方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前在我的程序中,我有一个Startup表单和一个Main表单.启动表单显示一两秒钟.

现在,我在计时器中有以下代码

  1. frmStartup.Destroy;
  2.  
  3. frmMain := TfrmMain.Create(Self);
  4. frmMain.Show;

现在,我不确定这是否是正确的方法..它有效,但在调用application.Terminate();
我收到一条访问违规消息,导致我相信我在破坏启动表单时做错了什么..

如果有人能够显示正确的程序来做我想要的(非模态),我将不胜感激.

提前致谢,

编辑:

感谢所有反馈,我通过简单地添加代码修复了访问冲突:

  1. Action := caFree;

进入frmStartup.formClose方法.

解决方法

不要使用Application.CreateForm创建frmStartup.在那里创建的第一个表单将成为应用程序的主要表单,如果是frmStartup,则会在应用程序知识之外将其销毁.

而是在项目源(.dpr)文件中使用普通的Form.Create:

  1. var
  2. frmStartup: TfrmStartup;
  3.  
  4. begin
  5. Application.Initialize;
  6. Application.MainFormOnTaskBar := True;
  7. frmStartup := TfrmStartup.Create(nil); // No owner assigned here!
  8. frmStartup.Show;
  9. frmStartup.Update;
  10.  
  11. Application.CreateForm(TfrmMain,frmMain); // Let Application have this for main form
  12. // Delay here if needed
  13. frmfrmStartup.Free;
  14. Application.Run;
  15. end.

猜你在找的Delphi相关文章