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

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

Как в броузер загрузить текст из строковой переменной? [D7]


Xenon ©   (2003-05-21 18:16:00) 

Есть мемо, содержащее HTML. Надо просмотреть его в TWebBrowser.
Как это сделать?


nikkie   (2003-06-01 13:51:00) [1]

Есть метод scrollIntoView у интерфейсов IHTMLElement и IHTMLTxtRange.

Если использовать первый, то надо найти в документе какой-нибудь таг (через IHTMLDocument2::get_body и дальше IHTMLElement::get_children).

Но такой подход сильно зависит от того, что пишется в документ и есть ли там вообще таги, за которые можно зацепиться. Поэтому я бы попробовал воспользовался IHTMLTxtRange.
1. вызвать IHTMLDocument2::get_body и запросить интерфейс IHTMLBodyElement
2. вызвать IHTMLBodyElement::createTextRange - запомнили начало и конец документа
3. дописать HTML методом write
4. вызвать IHTMLBodyElement::createTextRange - получили новые начало и конец документа
5. смещаем начало второго TxtRange на конец первого, используя IHTMLTxtRange::setEndPoint("StartToEnd", ...)
6. вызываем IHTMLTxtRange::scrollIntoView.


Dwemer   (2003-06-01 11:27:00) [2]

Когда загружаю текст (3м методом) полоса прокрутки остаются вверху и нижний текст не видно. Как мне прокрутить скрол вниз???


Кен   (2003-06-01 03:42:00) [3]

А как загрузить текст не в сам браузер, а в один из фрэймов этого браузера ?


Мое имя   (2003-05-27 14:50:00) [4]

а типа бровзер.навигатэ("about:"+Memo.lines.text) не помогает?


xenon   (2003-05-23 14:24:00) [5]

Виноват :)
не сделал WebBrowser1.Navigate("about:blank");

всем спасибо


Xenon   (2003-05-23 14:15:00) [6]

По поводу первого варианта:
1. что такое CheckDocReady(WebBrowser)?
2. Получаю Access violation at adddress ... в строке с HTMLDocument.Write(PSafeArray(TVarData(v).VArray));


Ihor Osov'yak   (2003-05-21 23:34:00) [7]

2 nikkie © (21.05.03 21:43)

> во 2-м варианте лучше WebBrowser.DefaultInterface.Document вместо WebBrowser1.Document


Естественно..

>во всех вариантах какой-нибудь документ должен быть уже загружен, например, через WebBrowser1.Navigate("about:blank");

Само собой, забыл упомянуть, спасибо..


nikkie   (2003-05-21 21:43:00) [8]

во 2-м варианте лучше WebBrowser.DefaultInterface.Document вместо WebBrowser1.Document

3 вариант

var
Doc: Variant;
begin
Doc := WebBrowser1.DefaultInterface.Document;
Doc.write(aText);
end;


во всех вариантах какой-нибудь документ должен быть уже загружен, например, через WebBrowser1.Navigate("about:blank");


Ihor Osov'yak   (2003-05-21 19:16:00) [9]

1 вариант

procedure ShowHTML(aText: string);
var
v: Variant;
HTMLDocument: IHTMLDocument2;
begin
CheckDocReady(WebBrowser);
HTMLDocument := WebBrowser.DefaultInterface.Document as IHTMLDocument2;
v := VarArrayCreate([0, 0], varVariant);
v[0] := aText; // Here"s your HTML string
HTMLDocument.Write(PSafeArray(TVarData(v).VArray));
HTMLDocument.Close;
end;


2 вариант


function TForm1.LoadFromStream(const AStream: TStream): HRESULT;
begin
AStream.seek(0, 0);
Result := (WebBrowser1.Document as IPersistStreamInit).Load
(TStreamAdapter.Create(AStream));
end;



Наверх

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