Обновленный TWebBrowser теперь реализует IDocUIHandler с самого начала, как я могу продолжать использовать свою собственную реализацию?

Начиная с Delphi 10.0 Seattle, Embarcadero изменила реализацию элемента управления TWebBrowser:

До Сиэтла: TWebBrowser = class(TOleControl)

Сиэтл+: TWebBrowser = class(TOleControl, IDocHostUIHandler, IDocHostShowUI, IOleCommandTarget)

У меня работает несколько старый код, в котором я реализовал класс, который мог регистрироваться как клиентский сайт/хост для TWebBrowser, где я предоставил свою собственную реализацию интерфейса IDocHostUIHandler.

Поскольку TWebBrowser теперь реализует их с самого начала (и держит их в секрете), и, насколько мне известно, от них трудно уйти - как мне получить новый компонент TWebBrowser для перерегистрации, где найти реализацию для IDocHostUIHandler?


person nelshh    schedule 03.08.2016    source источник
comment
Не проще ли было бы использовать более раннюю версию ShDocVw.Pas или просто создать свой собственный блок импорта для веб-браузера? Вам не обязательно использовать поставляемый Delphi.   -  person MartynA    schedule 03.08.2016


Ответы (1)


Вы можете унаследоваться от TWebBrowser и предоставить свои собственные определения интерфейса, как и раньше, например:

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

Это сообщает Delphi, что вы повторно реализуете интерфейс IDocHostUIHandler. Вы должны предоставить все функции для интерфейса, но это у вас уже есть.

person Dsm    schedule 03.08.2016
comment
Это решение, с которым я согласился, и оно действительно работает! - person nelshh; 04.08.2016