Главная страница
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.02 c
1-20519
MalkoLinge
2003-07-23 14:08
2003.08.07
Как заставить контрол показать свой хинт ?


14-20750
vidiv
2003-07-20 07:37
2003.08.07
Есть предложение придумать новый язык


7-20821
Lord Vader
2003-05-26 04:56
2003.08.07
Длинные имена в DOS


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


8-20641
Alexandr B.
2003-04-16 01:37
2003.08.07
Громкость