当我设置Self.Parent := nil;
时,有没有停止清除TWebBrowser?
当它到达那一行(这是最大化函数所必需的)时,表单中的所有TWebBrowser都会清除。为什么要这样做,我该怎么做才能避免这种情况?
编辑:
'Self'是MainForm上显示的当前形式(在本例中为AnsForm)。
Parent的先前值是MainForm中的Tab。
我尝试将Self.Parent
设置为其他内容,但同样的事情发生了。
答案 0 :(得分:1)
重新分配TWinControl.Parent
属性会导致该控件(在这种情况下,您的TForm
对象)销毁其HWND
(如果没有父{一个孩子HWND
就不能存在{1}}),并且在下次访问该控件的HWND
属性之前不会创建新的HWND
(如果此时没有Handle
可用,则会引发异常)。当一个控件破坏它的Parent
,它的所有子控件及其子控件等等时,也会销毁它们自己的HWND
。如果没有HWND
,则无法显示控件,并且存储在这些HWND
中的任何内容都将丢失。这就是你的HWND
对象被清除的原因。
某些组件在销毁TWebBrowser
时将其当前内容缓存在内存中,然后在新的HWND
可用时恢复该内容,但HWND
不会(并且不能)执行此操作。在这种情况下,您唯一的选择是再次手动重新加载当前URL。否则,请重新设计UI,以使TWebBrowser
对象不驻留在TWebBrowser
属性更改的父控件上。