如何关闭我从中调用模态窗体的模态窗体
How to close a modal form from which I call a modal form
主窗体打开模态窗体B.
窗体 B 打开模态窗体 C.
如何在打开窗体 C 之前关闭窗体 B?
诀窍是推迟对 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;
主窗体打开模态窗体B.
窗体 B 打开模态窗体 C.
如何在打开窗体 C 之前关闭窗体 B?
诀窍是推迟对 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;