Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить TextRange конкретного фрейма в TWebBrowser? [D5, Win95/98]


Good Man ©   (2002-06-17 21:29:00) 

Привет, Всем!

Получить TextRange страницы без фреймов мне удалось:

HTML_Doc := WebBrowser1.Document As IHTMLDocument2;
Window := HTML_Doc.parentWindow As IHTMLWindow2;
Body := HTML_Doc.get_body As IHTMLBodyElement;
Range := oBody.createTextRange;


Можно еще так:

var
a:IHTMLTxtRange;

a:=IHTMLDocument2(webbrowser1.Document).selection.createRange as IHTMLTxtRange;


А вот как добраться до конкретного фрейма не знаю (в моем случае "MainFrame").


int64   (2002-06-18 00:02:00) [1]

Каждый фрейм это "отдельный" WebBrowser в документе как контейнере.
Вот, набросал функцию, чтобы достучаться до любого фрейма:

function GetFrame(WB: TWebbrowser; FrameName: string): IWebbrowser2;
var
OleContainer: IOleContainer;
enum: IEnumUnknown;
TempUnk: IUnknown;
Fetched: PLongint;
FrameNo: integer;
Coll: HTMLElementCollection;
begin
With WB do
begin
while ReadyState <> READYSTATE_COMPLETE do
Forms.Application.ProcessMessages;
if Assigned(document) then
begin
Coll:=HTMLElementCollection(HTMLDocument(Document).All.Tags("FRAME"));
for FrameNo:=0 to Coll.length-1 do
if HTMLFrameElement(Coll.item(FrameNo,varEmpty)).name=FrameName then break;
Fetched := nil;
OleContainer := Document as IOleContainer;
OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum);
Enum.Skip(FrameNo);
Enum.Next(1, TempUnk, Fetched);
Result := TempUnk as IWebbrowser2;
end else Result := nil;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var W: IWebbrowser2;
begin
W:=GetFrame(WebBrowser1, "MainFrame");
if assigned(W) then
HTMLDocument(W.Document).body.innerHTML:= "<h1>Hi, World!</h1>";
end;


Дерзай.


Наверх

Титульная страница Поиск, карта сайта Написать письмо