反正有没有阻止TWebBrowser清除?

时间:2011-01-12 06:28:22

标签: delphi

当我设置Self.Parent := nil;时,有没有停止清除TWebBrowser? 当它到达那一行(这是最大化函数所必需的)时,表单中的所有TWebBrowser都会清除。为什么要这样做,我该怎么做才能避免这种情况?

编辑: 'Self'是MainForm上显示的当前形式(在本例中为AnsForm)。 Parent的先前值是MainForm中的Tab。 我尝试将Self.Parent设置为其他内容,但同样的事情发生了。

1 个答案:

答案 0 :(得分:1)

重新分配TWinControl.Parent属性会导致该控件(在这种情况下,您的TForm对象)销毁其HWND(如果没有父{一个孩子HWND就不能存在{1}}),并且在下次访问该控件的HWND属性之前不会创建新的HWND(如果此时没有Handle可用,则会引发异常)。当一个控件破坏它的Parent,它的所有子控件及其子控件等等时,也会销毁它们自己的HWND。如果没有HWND,则无法显示控件,并且存储在这些HWND中的任何内容都将丢失。这就是你的HWND对象被清除的原因。

某些组件在销毁TWebBrowser时将其当前内容缓存在内存中,然后在新的HWND可用时恢复该内容,但HWND不会(并且不能)执行此操作。在这种情况下,您唯一的选择是再次手动重新加载当前URL。否则,请重新设计UI,以使TWebBrowser对象不驻留在TWebBrowser属性更改的父控件上。