当我在 ButtonClick 事件上从我的表单中调用 OpenDialog 时。该对话框不显示为模式,也显示在任务栏中(在 WindowsXP 中)。我可以返回主窗体并一次又一次地单击打开 - 一次弹出几个对话框..
如何使 OpenDialog 在 Firemonkey 中成为模态?它是专门制作的,因此由于 FM 的多平台特性而不允许模态对话框吗?
编辑:该错误已在更新 3 中修复。
当我在 ButtonClick 事件上从我的表单中调用 OpenDialog 时。该对话框不显示为模式,也显示在任务栏中(在 WindowsXP 中)。我可以返回主窗体并一次又一次地单击打开 - 一次弹出几个对话框..
如何使 OpenDialog 在 Firemonkey 中成为模态?它是专门制作的,因此由于 FM 的多平台特性而不允许模态对话框吗?
编辑:该错误已在更新 3 中修复。
我认为这是一个错误。FireMonkey 有很多模态类型的错误,希望他们能尽快修复它们。目前,即使是模态形式也不是模态的。
对于您的问题,我有一个适用于 Windows 的解决方法,但您可能不喜欢它。
您需要在 FMX.Platform.Win 的 TPlatformWin.DialogOpenFiles() 方法中修复以下行。
变化with OpenFile do
中:
hwndOwner := 0;
对此:
hWndOwner := FmxHandleToHWND(Application.MainForm.Handle);
该函数使用 Windows GetOpenFileName
API 调用,即使它在 Vista 及更高版本上已被弃用。如果传入了所有者句柄,则对话框是模态的,否则不是。
您可能希望将此作为错误连同解决方法一起提交给 qc.embarcadero.com。