[FMX]从系统摄像头中获取图片

FMX 从系统中获取图片预定义了一个动作,叫 TTakePhotoFromCameraAction,不过它的实现有一个小 Bug,大家要注意一下。

问题出在它默认的 ExecuteTarget 的实现中,它的代码如下:

问题就出在 Target 未必是 TControl 的子类。TApplication.ActionExecuteTarget 中的代码:

只是保证了动作是 ActiveComponent ,而且 ActiveControlByForm 返回的有可能是 TForm,而 TForm 在 FMX 中却不是 TControl 的子类,所以问题就出来了。如果当前窗体没有一个 ActiveControl ,那就会返回当前的窗体,结果就是到了 TTakePhotoFromCameraAction 的 ExecuteTarget 时,由于 Target 是 TForm,不是从 TControl 继承下来的,结果出错。

好吧,这个 Bug 很低级,解决的办法也很简单,自己手动调用 ExecuteTarget,然后将参数设置为你触发动作的控件就好了。

分享到:

2 条评论

沙发空缺中,还不快抢~