HTML удобно использовать для совместного отображения графики, таблиц и текста. Чтобы юзать его в программе, обычно берут компонент TWebBrowser. Но что он делает? Он загружает ресурс по URLу с диска либо из интернета.. а если нам надо отобразить какую-нибудь инфу, полученную по ходу выполнения программы? придется писать на диск и загружать с него? нафиг надо!
Конечно, в таких случаях гораздо лучше будет грузить все дела напрямую из памяти. Мне известны два пути: "вумный" и "простой". Об обоих я узнал на delphimaster.ru.
Итак, "вумный" путь от Sergey Masloff:
"Автор идеи Анатолий Тенцер. Воспроизвожу по памяти но код 100% рабочий. Полная статья есть у Анатолия Подгорецкого на сайте."
procedure TForm1.ShowHTMLString(const AStr : String);
var
Document: IHTMLDocument2;
v: OleVariant;
begin
WebBrowser1.Navigate('about:blank');
Document := WebBrowser1.Document as IHtmlDocument2;
v := VarArrayCreate([0, 0], varVariant);
v[0] := Astr;
Document.write(PSafeArray(TVarData(v).VArray));
Document.Close;
end;
"Простой" путь подсказал TUser. Заключается он в следующем: нужно вызвать метод Navigate с параметром 'about:' + строка, в которой содержится ваш html-код. Всё!
html := '<h1>Слава TUser''у!</h1>'; WebBrowser1.Navigate('about:' + html);