Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何关闭一个模态窗体,我从中调用模态窗体_Delphi_Vcl - Fatal编程技术网

Delphi 如何关闭一个模态窗体,我从中调用模态窗体

Delphi 如何关闭一个模态窗体,我从中调用模态窗体,delphi,vcl,Delphi,Vcl,主窗体打开模式窗体B。 表格B打开模态表格C 如何在表格C打开之前关闭表格B?诀窍是将对表格C ShowModal的调用推迟到表格B关闭。以下代码可以放在ButtonClick事件处理程序中。它利用了最新Delphi版本中可用的ForceQueue方法。提供给ForceQueue的匿名方法将在稍后的某个时间在主线程中执行。这允许模态FormB在显示FormC之前完成 TThread.ForceQueue(nil, procedure var frm: TFormC

主窗体打开模式窗体B。
表格B打开模态表格C


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

诀窍是将对表格C ShowModal的调用推迟到表格B关闭。以下代码可以放在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;

诀窍是将对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;

当模态表格C即将打开时,用一个选项关闭B,这样主表格就可以打开模态表格C。要扩展LU RD的意思,不要从表格B打开表格C,从表格A打开它。当你想打开表格C时,用一个模态值关闭表格B,告诉表格A打开表格C。当模态表格C即将打开时,用一个选项关闭B,因此,主窗体可以打开模态窗体C。要扩展LU RD所说的内容,不要从窗体B打开窗体C,而是从窗体A打开。当您要打开窗体C时,请使用模态值关闭窗体B,该值告诉窗体A打开窗体C。