Delphi 更新的TWebBrowser现在从一开始就实现IDocUIHandler,我如何继续使用我的自定义实现?

Delphi 更新的TWebBrowser现在从一开始就实现IDocUIHandler,我如何继续使用我的自定义实现?,delphi,com,ole,twebbrowser,shdocvw,Delphi,Com,Ole,Twebbrowser,Shdocvw,从Delphi 10.0西雅图开始,Embarcadero改变了TWebBrowser控件的实现: 西雅图之前:TWebBrowser=class(TOleControl) 西雅图+:TWebBrowser=class(TOleControl、IDocHostUIHandler、IDocHostShowUI、iolecommand和target) 我运行了一些旧代码,在那里我实现了一个类,可以注册为TWebBrowser的客户端站点/主机,在那里我提供了自己的IDocHostUIHandler接

从Delphi 10.0西雅图开始,Embarcadero改变了TWebBrowser控件的实现:

西雅图之前:
TWebBrowser=class(TOleControl)

西雅图+:
TWebBrowser=class(TOleControl、IDocHostUIHandler、IDocHostShowUI、iolecommand和target)

我运行了一些旧代码,在那里我实现了一个类,可以注册为
TWebBrowser
的客户端站点/主机,在那里我提供了自己的
IDocHostUIHandler
接口实现


由于
TWebBrowser
现在从一开始就实现了这些功能(并将它们保持为私有),而且据我所知,很难从中降级-我如何让新的
TWebBrowser
组件重新注册到哪里可以找到
IDocHostUIHandler
的实现

您可以从TWebBrowser开始,像以前一样提供自己的接口定义,如下所示:

Type
  TMyWebBrower = class( TWebBrowser, IDocHostUIHandler )
  ...
  end;

这告诉Delphi您正在重新实现IDocHostUIHandler接口。您必须为接口提供所有功能,但您已经具备了这些功能。

使用较早版本的ShDocVw.Pas,或者只是为webbrowser创建您自己的导入单元,不是最简单吗?您不必使用Delphi提供的解决方案。这是我解决的解决方案,它确实有效!