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

Вниз

показ html текста ..   Найти похожие ветки 

 
Олег Лаукарт ©   (2002-05-11 14:44) [0]

Подскажите, можно ли показать HTML документ, который сформирован в памяти? Нужно показать HTML-представление результата без сохранения в файл. Сейчас делаю примерно так:
procedure P (Stream:TStringStream); //есть HTML
var f,v:Olevariant;
begin
Browser := TWebBrowser.Create(nil);
with TStringList.Create do
try
LoadFromStream (Stream);
SaveToFile (FileName);
f := navOpenInNewWindow;
v:=null;
Browser.Navigate (FileName,f,v);
finally
Free;
Browser.Free;
end;
end;


 
Ra ©   (2002-05-12 12:04) [1]

кажется отображать html из памяти умеет tHTMLViewer искать на torry


 
lipskiy ©   (2002-05-12 17:02) [2]

http://delphibase.endimus.com/?action=viewfunc&topic=netbrowse&index=1


 
Олег Лаукарт ©   (2002-05-14 12:45) [3]

для lipskiy:
спасибо, но у меня не получилось воспользоваться примером. Делаю так

var
WB:TWebBrowser_V1;
begin
WB:=TWebBrowser_V1.Create(nil);
try TextToWebBrowser("<h1>Header</h1><p>Text</p>", WB);
finally WB.Free;
end;

в результате ничего не получаю.
Если меняю в TextToWebBrowser следующую строку
if WB.Document = nil then WB.Navigate("about:blank");
на
var f,v:Olevariant;
...
f := navOpenInNewWindow; v:=null;
if WB.Document = nil then WB.Navigate("about:blank",f,v);

то вижу пустое окно браузера, но без указанного мною HTML.
В обоих случаях приложению наступают "кранты" - попап-меню перестают работать и проч. при закрытии - Access violation...

В чем ошибка использования примера?


 
Олег Лаукарт ©   (2002-05-14 12:46) [4]

Информация на всякий случай: D6,U1,NT.


 
Дмитрий Баранов   (2002-05-14 13:26) [5]

Вроде как надо импортировать библиотеку MSHTML.tlb, а потом поковыряться с интерфейсами (IHTMLDocument -> IHTMLBodyElement). Я с ним не работал, но нашел у себя интерфейс DispHTMLBody, у которого обнаружено св-во innerHTML. Поэкспериментируйте.


 
Дмитрий Баранов   (2002-05-14 13:49) [6]

Все гениальное просто. Вот и самому пригодилось.

procedure TForm1.Button1Click(Sender: TObject);
var CoBody: CoHTMLBody;
Body: DispHTMLBody;
Document: IDispatch;
Cod: CoHTMLDocument;
d : DispHTMLDocument;
b : IHTMLElement;
begin
CoInitializeEx(nil, COINIT_MULTITHREADED);
WB.Navigate("about:blank");
OleCheck(WB.Document.QueryInterface(IID_IHTMLDocument, d));
d.write("<h1>Hello world</h1>");
end;

Ну, ес-но, надо корректней все оформить :)


 
Олег Лаукарт ©   (2002-05-15 13:13) [7]

протестируем ... :) спасибо


 
Олег Лаукарт ©   (2002-05-15 13:20) [8]

Откуда CoInitializeEx? в каком модуле описан?


 
Дмитрий Баранов   (2002-05-15 13:27) [9]

То ли ComObj, то ли ActiveX ... Только вызов этой ф. надо производить в initialize, или на крайний случай в Form.Create
А вообще она излишество, если поток один - достаточно вызова CoInitialize.


 
Filat ©   (2002-05-15 16:09) [10]

А почему бы вопросик в Фак не засунуть, очччень интересный:))) ?


 
hooky-mars ©   (2002-05-15 17:31) [11]

мона сохранить текст в файлик во временной папке и отабразить его так:
....
WebBrowser1.Navigate("Путь к файлу");

А по окончании уничтожить файлик


 
Олег Лаукарт ©   (2002-05-15 18:52) [12]

Можно и временный файл использовать. Его можна удалить сразу после WebBrowser1.Navigate("Путь к файлу"); - браузеру это не помешает. Но ради чего создавать файл? Это нагрузка на ресурсы системы и усложнение логики. Ради чего? Есть ли причина?



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
3-88351
Roman_tutov
2002-04-19 16:56
2002.05.27
сортировка в dbGrid


1-88439
eSKey
2002-05-17 12:53
2002.05.27
Опять TStream -


1-88494
Abu
2002-05-15 17:30
2002.05.27
Как убрать конечные пробелы в строке ?


1-88515
dlp
2002-05-13 21:33
2002.05.27
такой вопрос


3-88385
HAZARD
2002-05-04 00:55
2002.05.27
Ну вот и столкнулся :(