如何在Firemonkey中使OpenDialog显示模态?

时间:2011-11-30 09:29:41

标签: delphi modal-dialog delphi-xe2 firemonkey fileopendialog

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

如何在Firemonkey中将OpenDialog设为模态? 它是否专门制作,因为FM的多平台安全性不允许模态对话框?

编辑:此错误已在Update 3中修复。

1 个答案:

答案 0 :(得分: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以及解决方法。