【问题标题】:Delphi: 'ShowModal' from non-modal secondary formDelphi:来自非模态辅助形式的“ShowModal”
【发布时间】:2012-10-15 09:58:14
【问题描述】:

我们有一个应用程序,它有一个主窗体和一个可以并排使用的非模态窗体。我们的主窗体显示了配置列表,而第二个非模态窗体显示了更详细的配置。

当我们显示一个模态表单(从第二个非模态表单请求)时,主表单会在第二个表单前面弹出,直到我们关闭该模态表单。

如何避免这种行为?我已经尝试过以不同的方式创建最后一个模态表单('Applicaton.CreateForm'、'TForm.Create'、设置父级),但仍然会弹出主表单。

有什么想法吗?

提前致谢!

【问题讨论】:

  • 通常如何创建模态表单(不使用Applicaton.CreateForm)?你试过ModalForm := TModalForm.Create(nil); ModalForm.ShowModal;之类的吗?
  • 将父级设置为模态表单可能会冻结您的应用程序
  • 您是否尝试将 mainform 设置为 form2nd.parent ?
  • PopupParent 可能是您问题的答案。
  • +1,我可以重现这个

标签: forms delphi modal-dialog non-modal


【解决方案1】:

Application.ModalPopupMode 设置为pmAuto

文档是这样说的:

TForm.PopupParent

设置用户无法更改的堆叠表单的顺序。 如果 PopupMode 属性设置为 pmExplicit 且 PopupParent 为 nil,则 Application.MainForm 被隐式用作 PopupParent。如果没有分配 Application.MainForm,则 Application.Handle 用作 PopupParent。 如果 PopupMode 属性设置为 pmAuto,则 Screen.ActiveForm 用作 PopupParent 属性。

【讨论】:

    猜你喜欢
    • 2013-02-10
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    相关资源
    最近更新 更多