![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
показ html текста ..
Олег Лаукарт © (2002-05-11 14:44:00)Подскажите, можно ли показать 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;
Олег Лаукарт (2002-05-15 18:52:00) [1]Можно и временный файл использовать. Его можна удалить сразу после WebBrowser1.Navigate("Путь к файлу"); - браузеру это не помешает. Но ради чего создавать файл? Это нагрузка на ресурсы системы и усложнение логики. Ради чего? Есть ли причина?
hooky-mars (2002-05-15 17:31:00) [2]мона сохранить текст в файлик во временной папке и отабразить его так:
....
WebBrowser1.Navigate("Путь к файлу");
А по окончании уничтожить файлик
Filat (2002-05-15 16:09:00) [3]А почему бы вопросик в Фак не засунуть, очччень интересный:))) ?
Дмитрий Баранов (2002-05-15 13:27:00) [4]То ли ComObj, то ли ActiveX ... Только вызов этой ф. надо производить в initialize, или на крайний случай в Form.Create
А вообще она излишество, если поток один - достаточно вызова CoInitialize.
Олег Лаукарт (2002-05-15 13:20:00) [5]Откуда CoInitializeEx? в каком модуле описан?
Олег Лаукарт (2002-05-15 13:13:00) [6]протестируем ... :) спасибо
Дмитрий Баранов (2002-05-14 13:49:00) [7]Все гениальное просто. Вот и самому пригодилось.
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-14 13:26:00) [8]Вроде как надо импортировать библиотеку MSHTML.tlb, а потом поковыряться с интерфейсами (IHTMLDocument -> IHTMLBodyElement). Я с ним не работал, но нашел у себя интерфейс DispHTMLBody, у которого обнаружено св-во innerHTML. Поэкспериментируйте.
Олег Лаукарт (2002-05-14 12:46:00) [9]Информация на всякий случай: D6,U1,NT.
Олег Лаукарт (2002-05-14 12:45:00) [10]для 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...
В чем ошибка использования примера?
lipskiy (2002-05-12 17:02:00) [11]http://delphibase.endimus.com/?action=viewfunc&topic=netbrowse&index=1
Ra (2002-05-12 12:04:00) [12]кажется отображать html из памяти умеет tHTMLViewer искать на torry