Форум: "Основная";
Текущий архив: 2002.05.27;
Скачать: [xml.tar.bz2];
Внизпоказ 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c