代码如下
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;

解决方案 »

  1.   

    用临时文件(*.html)来代替TMemoryStream试试。var sl: TStringList;
        tempFile: String;
    begin
      tempFile := ExtractFilePath(Application.ExeName) + 'tempFile.html';
      sl := TStringList.Create;
      sl.Text := HTMLCode;
      sl.SaveToFile(tempFile);
      WebBrowser1.Navigate(tempFile);
      {...}
    end;
      

  2.   

    procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: TStrings);
    var
      ms: TMemoryStream;
    begin
      WebBrowser.Navigate('about:blank');
      while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
       Application.ProcessMessages;  if Assigned(WebBrowser.Document) then
      begin
        ms := TMemoryStream.Create;
        try
          HTMLCode.SaveToStream(ms);
          ms.Seek(0, 0);
          (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
        finally
          ms.Free;
        end;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      WB_LoadHTML(WebBrowser1, Memo1.Lines);
    end;(注:改成TStrings、試一下)
      

  3.   

    另外, cronuz,使用你的代码会在英文WINDOWS版中显示源码,我以前用的就是和你这个代码一样的。改成我提问中的代码后,英文WINDOWS中显示正常了。但还是有个别中英文WINDOWS显示源码
      

  4.   

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      WebBrowser1.Navigate('about:blank');
      WebBrowser1.OleObject.Document.body.innerHTML := memo1.Text;
    end;注:你試試这样行嗎?
    還有:設定charset為中文的
        <meta http-equiv="Content-Type" content="text/html; charset=???">
      

  5.   

    更正:加一行、否則有ERROR...procedure TForm1.Button2Click(Sender: TObject);
    begin
      WebBrowser1.Navigate('about:blank');
      while WebBrowser1.ReadyState < READYSTATE_INTERACTIVE do
        Application.ProcessMessages;
      WebBrowser1.OleObject.Document.body.innerHTML := memo1.Text;
    end;
      

  6.   

    使用Document.body.innerHTML的话,只能读入到<body></body>标记内吧,需要读入的数据是整个页面内容,包括<html></html>之间的全部内容
      

  7.   

    在<html></html>之间的
    <title></title>和<body></body>是不同的Object,要分別処理。NI自己看看↓里document部分
    http://msdn.microsoft.com/library/default.asp?url=/workshop/components/htc/reference/htcref.asp