【问题标题】:Top modal form close in nested modal forms closes all other modal forms?嵌套模态表单中的顶部模态表单关闭所有其他模态表单?
【发布时间】:2010-04-20 06:46:58
【问题描述】:

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

如何预防?

【问题讨论】:

    标签: delphi forms modal-dialog


    【解决方案1】:

    这不是真的,您的代码中肯定存在其他问题。设置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 并且在第二个对话框关闭后,正确的是由表单类完成,对话框关闭。
    猜你喜欢
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多