当我从ButtonClick事件上调用OpenDialog时。对话框不显示为模态,也在taskebar(在WindowsXP中)中显示。我可以返回主表单,然后一次又一次地单击 - 一次弹出几个对话框。

如何使OpenDialog在Firemonkey中成为模态?是否专门制作,因此由于FM的多平台抗性,不允许模态对话框?

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

有帮助吗?

解决方案

我认为这是一个错误。 Firemonkey有很多模态类型的错误,希望它们能尽快解决。当前,即使是模态表单也不是模态。

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

您需要在fmx.platform.win中的tplatformwin.dialogopenfiles()方法中修复以下行。

在下面 with OpenFile do 改变:

hwndOwner := 0;

为此:

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

该功能利用窗口 GetOpenFileName API呼叫,即使在Vista及以上已弃用了它。如果传递所有者手柄,则对话框是模态,否则不是。

您可能希望将此作为错误提交QC.Embarcadero.com以及解决方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top