如何从我关闭模态表单的方式称为模态表单

时间:2019-01-31 15:13:04

标签: delphi vcl

主窗体打开模式窗体B。 表格B打开模式表格C。 如何在表单C打开之前关闭表单B?

1 个答案:

答案 0 :(得分:3)

技巧是将对FormC的 ShowModal 的调用推迟到FormB关闭之前。可以将以下代码放在ButtonClick事件处理程序中。它利用了最新的Delphi版本中可用的 ForceQueue 方法。赋予 ForceQueue Anonymous Method 将在稍后的主线程中执行。这样可以使模态FormB在显示FormC之前完成。

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