Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > OleVariant -> IHTML_____


Автор: December 1.8.2005, 05:36
Greetings All!
В Delphi почему-то не видны некоторые описанные в MSDN интерфейсы, поэтому часто приходится работать через OleVariant. Однако иногда необходимо "вернуться" от OleVariant'a к, скажем, IHTMLElement'у, поскольку последний обладает массой полезных свойств и методов. Кто-нить знает, как это сделать? Скажем, на примере соседнего топика, получив
Код

WebBrowser1.OleObject.Document.frames.item('panelFrame').document.getElementById('citytime')

откастовать это к IHTMLElement.

Автор: p0s0l 1.8.2005, 06:43
Элементарно smile, я ж в той теме как раз это и делал для определения, найден элемент или нет - получал интерфейс из OleVariant (а дальше перейти к нужному IHTMLElement не должно составить труда):
Код

var 
  el : OleVariant;
  e : IHTMLElement;
... 
  el := WebBrowser1.OleObject.....;
  e := IDispatch(el) as IHTMLElement;


Почему так ? Потому что одним из типов, который поддерживает вариант, является IDispatch:
Цитата(system)

  varDispatch = $0009; { vt_dispatch     9 }
поэтому можем OleVariant вначале преобразовать к IDispatch (или IUnknown), а дальше делать QueryInterface для получения нужного интерфейса...

Автор: December 1.8.2005, 16:31
Спасибо! К сожалению, я в интерфейсах всяких не силён smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)