嵌套模态形式中的顶部模态形式关闭所有其他模态形式?

时间:2010-04-20 06:46:59

标签: delphi forms modal-dialog

当形式A是模态并且它显示第二个模态形式B,并且B的模态结果被设置而B然后关闭时,A也被关闭。

如何防止这种情况?

1 个答案:

答案 0 :(得分:8)

事实并非如此,您的代码中还有其他一些问题。设置ModalResult只会影响当前的模态表单。试试这个非常简单的例子:

  • 创建新表单

  • 将按钮放在上面

  • 在按钮OnClick事件处理程序中添加以下代码:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with TForm1.Create(Self) do begin
        if ShowModal = mrCancel then
          Self.Color := RGB(Random(256), Random(256), Random(256));
      end;
    end;
    

您将观察到按下每个按钮会创建一个新的模态窗体,您可以根据需要重复此操作。关闭表单会将其ModalResult设置为mrCancel并重新启用父表单。要退出应用程序,您需要按照创建的相反顺序逐个关闭所有表单。