您的位置:首页 > 编程语言 > Delphi

Delphi Tokyo 版本 TWebBrowser 的一个问题(Bug?)

2017-10-01 23:18 218 查看
FireMonkey  底下,Android APP:

在一个 Form 上放页标签,在其中一个页里放一个 TWebBrowser ,其它页放其它界面控件。加个按钮,让 WebBrowser1 去打开一个 URL,显示一个网页。

APP 编译为 Windows 版本,运行,没有任何问题。

编译为 Android 运行在手机上,当 WebBrowser 打开网页后,切换到其它页标签后(WebBrowser1 没在屏幕上显示了),整个界面失去对触摸到响应。用 Debug 方式来运行看,IDE 里面没有任何错误提示出来。

换种方式,将 WebBrowser 放到一个 Layout 上,同时在这个 Layout 上放一个 ListView。加个按钮,隐藏 WebBrowser 以显示 ListView。

同样,当 WebBrowser 打开网页后,如果点按钮隐藏掉它,ListView 倒是显示出来了,然后整个界面就失去对触摸到响应,好像死机了。

再换种方式,增加一个 Form,把 WebBrowser1 放到这个 Form 上面。Form 上放一个按钮,事件代码是关闭这个 Form。命名这个 Form 为 FmWebBrowser.

主界面里面,点按钮,显示有 WebBrowser1 的 Form,打开一个网页。然后点这个 Form 上的关闭按钮,回到主界面,然后主界面失去对触摸的响应。

------------------------------------------------------

总结:不管什么方式,只要显示了网页,然后将当前屏幕的 WebBrowser 切换为显示其它界面元素,整个程序失去响应。这个问题在 Berlin 版本是没有的。

-------------------------------------------------------

上网搜了一下,没搜到相应的问题报告,也没搜到解决办法。

自己试了试,将工程文件里面创建这个 FmWebBrowser 的代码注释掉。在主 Form 里面,需要显示 WebBrowser 的地方,增加一行代码:

if not Assigned(FmWebBrowser) then FmWebBrowser := TFmWebBrowser.Create(Application);
也就是运行期动态创建它。

然后,这个问题就消失了。

看起来,在 FireMonkey Mobile 的程序里面,不能在程序启动的时候就创建 WebBrowser 实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐