我已经使用标准的 Delphi VCL演示确认了这个问题,唯一的区别是我把带有edgebrowser组件的面板放在了TPageControl Tabsheet上。
现在,如果我的应用程序启动时,Edgebrowser在屏幕上不可见(因为另一个选项卡处于活动状态),Edgebrowser将永远不会在屏幕上完全绘制。它将永远只显示为一个灰色矩形,并且无法从中恢复,除非我在Edgebrowser组件在屏幕上可见时调用EdgeBrowser.CloseWebView; EdgeBrowser.CreateWebView;
(它 * 必须 * 可见,否则再次什么也不会发生)。
这意味着当Edgebrowser在后台、在另一个标签页上或当表单隐藏时,我不能发出“Edgebrowser.Navigate”命令或任何命令,否则它将再次“变灰”。
我想知道:这是一个错误还是我错过了一些主要的东西?我试着调用Edgebrowser.Refresh和Edgebrowser.Repaint,但都没有帮助。一旦它是灰色的,只有关闭并重新创建WebView有助于恢复它。
我很清楚这是某种画布问题,但我不知道从哪里开始。我希望你能帮助或至少确认这种奇怪的行为。
**系统规格:**VMware Workstation 16中Windows 10 Pro 20 H2中的 Delphi 10.4 Update 1来自nuget的microsoft.web.webview2.0.9.579和来自here的最新Edge Runtime(使用bootstrap安装程序安装)
要在您的系统上快速重新创建相同的方案,请执行以下操作:* 打开“C:\Users\Public\Documents\Embarcadero\Studio\21.0\Samples\Object Pascal\VCL\WebBrowser\Edge\EdgeBrowser.dproj”;将pnlWebViewHost剪切到剪贴板(这是包含Edgebrowser组件的面板);插入TPageControl;添加2个标签页,并将pnlWebViewHost粘贴到其中一个标签页上。切换到另一个空标签页,然后运行应用程序。在运行时,使用浏览器单击标签页,现在应该只显示为灰色矩形。*
1条答案
按热度按时间sdnqo3pr1#
我有一个标签页,我在所有页面上都有一个浏览器。我在所有浏览器中都有一个网页如果我点击一个标签页,我可以在浏览器之间切换。如果我销毁一个浏览器,所有浏览器都将是灰色的。如果我在每个浏览器上调用ReinitializeWebView,它就会再次工作。我在标签页上添加一个按钮,ReinitializeWebView,所以我只在浏览器可见时尝试。TWebbrower更独立。
如果我在浏览器中加载了一个文件,比如XML,如果我关闭了那个浏览器,它对其他浏览器没有影响。但是如果我关闭了其他浏览器,它将是灰色的。