加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 04:24:53 所属栏目:大数据 来源:网络整理
导读:目前在我的程序中,我有一个Startup表单和一个Main表单.启动表单显示一两秒钟. 现在,我在计时器中有以下代码: frmStartup.Destroy; frmMain := TfrmMain.Create(Self); frmMain.Show; 现在,我不确定这是否是正确的方法..它有效,但在调用application.Terminat
目前在我的程序中,我有一个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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读