delphi - 如何让OpenDialog在Firemonkey中显示模式?

标签 delphi modal-dialog delphi-xe2 firemonkey fileopendialog

当我在 ButtonClick 事件上从表单调用 OpenDialog 时。该对话框不显示为模式,并且也显示在任务栏中(在 WindowsXP 中)。我可以返回主窗体并一次又一次单击“打开” - 一次弹出多个对话框..

如何在 Firemonkey 中使 OpenDialog 成为模式? 由于 FM 的多平台特性,是否特意不允许出现模式对话框?

编辑:该错误已在更新 3 中修复。

最佳答案

我认为这是一个错误。 FireMonkey 有很多模态类型错误,希望他们很快就能修复它们。目前,即使是模态形式也不是模态的。

对于您的问题,我有一个适用于 Windows 的解决方法,但您可能不喜欢它。

您需要修复 FMX.Platform.Win 中 TPlatformWin.DialogOpenFiles() 方法中的以下行。

下使用 OpenFile 进行更改:

hwndOwner := 0;

对此:

hWndOwner := FmxHandleToHWND(Application.MainForm.Handle);

该函数利用 Windows GetOpenFileName API 调用,尽管它在 Vista 及更高版本中已被弃用。如果传入所有者句柄,则该对话框是模态的,否则不是。

您可能希望将此作为错误连同解决方法一起提交到 qc.embarcadero.com。

关于delphi - 如何让OpenDialog在Firemonkey中显示模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323690/

相关文章:

javascript - 未捕获ReferenceError : _ is not defined and Uncaught TypeError: undefined is not a function

java - 如何让模态对话框不阻止我的第二个顶级框架

delphi - 如何在项目 "by reference"中使用配置选项集

ios - Delphi XE2 应用程序在 IPAD 上没有响应

delphi - 我可以将类/记录方法链接到外部模块吗?

delphi - 类声明之间的差异

delphi - 同一应用程序的两个不同版本

javascript - 内容变化的模态

delphi - 尝试从 dll 加载过程时 Delphi 中出现错误

delphi - 如何阅读页面源 TWebBrowser Firemonkey