如何使OpenDialog在Firemonkey中显示模态?
-
26-10-2019 - |
题
当我从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以及解决方法。
不隶属于 StackOverflow