Delphi 嵌套模式窗体中的顶部模式窗体关闭是否关闭所有其他模式窗体?

Delphi 嵌套模式窗体中的顶部模式窗体关闭是否关闭所有其他模式窗体?,delphi,forms,modal-dialog,Delphi,Forms,Modal Dialog,当表格A为模态且显示第二模态表格B时,设置B的模态结果,然后B关闭,A也关闭 如何防止这种情况发生?这不是真的,您的代码中肯定存在其他问题。设置ModalResult将只影响当前的模态形式。试试这个非常简单的例子: 创建一个新表单 在上面放一个按钮 在按钮OnClick事件处理程序中添加以下代码: procedure TForm1.Button1Click(Sender: TObject); begin with TForm1.Create(Self) do begin if Sh

当表格A为模态且显示第二模态表格B时,设置B的模态结果,然后B关闭,A也关闭


如何防止这种情况发生?

这不是真的,您的代码中肯定存在其他问题。设置
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
并重新启用父表单。要退出应用程序,您需要按照与创建相反的顺序逐个关闭所有表单。

正确,经过一些搜索和测试,我发现-等待它-“不知何故……”按钮的ModalResult为mrNo,在第二个对话框关闭后,表单类完成了正确的操作,对话框关闭。