Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как загрузить HTML код непосредственно в TWebBrowser

Delphi , Интернет и Сети , Браузер

Как загрузить HTML код непосредственно в TWebBrowser

Автор: http://www.swissdelphicenter.ch

uses
  ActiveX;

procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var
  sl: TStringList;
  ms: TMemoryStream;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
    Application.ProcessMessages;

  if Assigned(WebBrowser.Document) then
  begin
    sl := TStringList.Create;
    try
      ms := TMemoryStream.Create;
      try
        sl.Text := HTMLCode;
        sl.SaveToStream(ms);
        ms.Seek(0, 0);
        (WebBrowser.Document as
          IPersistStreamInit).Load(TStreamAdapter.Create(ms));
      finally
        ms.Free;
      end;
    finally
      sl.Free;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  WB_LoadHTML(WebBrowser1, 'SwissDelphiCenter');
end;

Код-снippet демонстрирует, как загрузить содержимое HTML напрямую в компонент TWebBrowser в Delphi. Процедура WB_LoadHTML принимает два параметра: WebBrowser - экземпляр TWebBrowser, и HTMLCode - строка, содержащая HTML-контент.

Вот шаг за шагом, что код делает:

  1. Он навигирует WebBrowser на пустую страницу с помощью Navigate('about:blank').
  2. Код ожидает, пока страница будет готова, проверяя свойство ReadyState, пока оно не достигнет READYSTATE_INTERACTIVE. Это обеспечивает, что страница полностью загружена перед попыткой манипулировать ее содержимым.
  3. Если документ был назначен (т.е. страница была загружена), код создает TStringList и TMemoryStream.
  4. Строковый список заполняется HTML-кодом и затем сохраняется в паметном потоке с помощью SaveToStream.
  5. Памятный поток позиционируется на начало (0) и загружается в документ с помощью Load метода IPersistStreamInit.

Процедура Button1Click демонстрирует, как использовать эту функцию, вызывая WB_LoadHTML с экземпляром TWebBrowser (WebBrowser1) и строкой HTML-кода ('SwissDelphiCenter').

Обратите внимание, что вам нужно включить ActiveX в ваш список используемых для этого кода работать.

Альтернативное решение: Вместо использования IPersistStreamInit можно также использовать свойство HTMLDocument.Text для установки содержимого HTML напрямую. Вот пример:

procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
    Application.ProcessMessages;

  if Assigned(WebBrowser.Document) then
  begin
     (WebBrowser.Document as IHTMLDocument2).body.innerHTML := HTMLCode;
  end;
end;

Эта APPROACH проще и более прямолинейна, но может не работать в всех случаях, особенно при загрузке сложного содержимого HTML. Оригинальный код с использованием IPersistStreamInit обеспечивает более надежное решение для загрузки произвольного содержимого HTML.

В статье описывается способ загрузки HTML-кода непосредственно в TWebBrowser с помощью процедуры WB_LoadHTML, которая использует паметный поток и интерфейс IPersistStreamInit для загрузки кода.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-12 15:11:11/0.0038340091705322/0