首页 > 解决方案 > 如何关闭我称之为模态表单的模态表单

问题描述

主窗体打开一个模态窗体 B。
窗体 B 打开一个模态窗体 C。

如何在表格 C 打开之前关闭表格 B?

标签: delphivcl

解决方案


诀窍是推迟对 FormC 的ShowModal的调用,直到 FormB 关闭。以下代码可以放置在 ButtonClick 事件处理程序中。它利用了最新的 Delphi 版本中可用的ForceQueue方法。赋予ForceQueue匿名方法稍后将在主线程中执行。这允许模态 FormB 在显示 FormC 之前完成。

  TThread.ForceQueue(nil,
    procedure
    var
      frm: TFormC;
    begin
      frm := TFormC.Create(Application);
      try
        frm.ShowModal;
      finally
        frm.Free;
      end;
    end
  );
  ModalResult := mrOK;

推荐阅读