【问题标题】:Is there anyway to stop TWebBrowser from clearing?有没有办法阻止 TWebBrowser 清除?
【发布时间】:2011-01-12 06:28:22
【问题描述】:

当我设置Self.Parent := nil; 时,有没有办法阻止 TWebBrowser 清除? 当它到达该行时(这是最大化功能所必需的),我表单中的所有 TWebBrowsers 都会清除。为什么会这样?我能做些什么来避免这种情况?

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

【问题讨论】:

  • Self 在此上下文中指的是哪种对象? Parent 之前的值是多少?
  • Self 是 MainForm 上显示的当前表单(在本例中为 AnsForm)。 Parent 之前的值是 MainForm 中的一个 Tab。
  • 为什么要改parent
  • 它是最大化功能的一部分。它将表单 (AnsForm) 从 MainForm 中分离出来。

标签: delphi


【解决方案1】:

重新分配TWinControl.Parent 属性会导致该控件(在本例中为您的TForm 对象)销毁其HWND(因为没有父HWND,子HWND 不能存在),并且新的@直到下次访问该控件的 Handle 属性时才会创建 987654326@(如果此时没有可用的 Parent,则会引发异常)。当控件销毁其HWND 时,其所有子控件及其子控件等也会销毁其自己的HWNDs。如果没有HWND,控件将无法显示任何内容,并且存储在HWNDs 中的任何内容都会丢失。这就是为什么您的 TWebBrowser 对象会被清除。

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

【讨论】:

  • 好的。谢谢你的帮助。 :)
猜你喜欢
  • 2021-01-18
  • 2018-08-20
  • 1970-01-01
  • 2016-01-06
  • 2019-10-20
  • 1970-01-01
  • 2015-02-03
  • 2020-05-04
  • 1970-01-01
相关资源
最近更新 更多