Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.07;
Скачать: CL | DM;

Вниз

Как в броузер загрузить текст из строковой переменной?   Найти похожие ветки 

 
Xenon ©   (2003-05-21 18:16) [0]

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


 
Ihor Osov'yak ©   (2003-05-21 19:16) [1]

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;




 
nikkie ©   (2003-05-21 21:43) [2]

во 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 23:34) [3]

2 nikkie © (21.05.03 21:43)

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


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

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

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


 
Xenon ©   (2003-05-23 14:15) [4]

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



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

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

всем спасибо


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

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


 
Кен ©   (2003-06-01 03:42) [7]

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


 
Dwemer ©   (2003-06-01 11:27) [8]

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


 
nikkie ©   (2003-06-01 13:51) [9]

Есть метод 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.



Страницы: 1 вся ветка

Текущий архив: 2003.08.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
14-20714
Vlad Oshin
2003-07-23 16:13
2003.08.07
Безобразно используется своп :(


14-20774
WALRUS
2003-07-19 11:39
2003.08.07
OpenGL


3-20447
wonder_boy
2003-07-17 14:57
2003.08.07
Передача коннекта к БД из ехе в длл


14-20796
мак
2003-07-22 13:44
2003.08.07
Cnhjrf


14-20791
Avenger[NhT]
2003-07-06 11:36
2003.08.07
Avl