В TWebBrowser из String

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);


© MiZa