HTML放在memo1 让WebBrowser1把这些HTML代码显示出来

解决方案 »

  1.   

    http://www.delphibbs.com/delphibbs/dispq.asp?lid=301420
      

  2.   

    procedure writeHTML(WebInfo:TWebBrowser;text:String);
    var
     HTMLDoc: IHTMLDocument2;
     v:Variant;
    begin
      WebInfo.Navigate('about:blank', EmptyParam, EmptyParam, EmptyParam, EmptyParam);
      while WebInfo.ReadyState <> READYSTATE_COMPLETE do
      begin
        Application.ProcessMessages;
        Sleep(0);
      end;
      if Assigned(WebInfo.Document) then
      begin
        HTMLDoc := WebInfo.Document as IHTMLDocument2;
        v := VarArrayCreate([0, 0], varVariant);
        v[0] := text; // Here's your HTML string
        HTMLDoc.clear;
        HTMLDoc.Write(PSafeArray(TVarData(v).VArray));
        HTMLDoc.Close;
        v:=Unassigned;
      end;
    end;
    //以流方式加载数据到WebBrowser控件
    procedure LoadStream(WebBrowser: TWebBrowser; Stream: TStream);
    var
       PersistStreamInit: IPersistStreamInit;
       StreamAdapter: IStream;
       MemoryStream: TMemoryStream;
    begin
       WebBrowser.Navigate('about:blank');
       repeat
         Application.ProcessMessages;
         Sleep(0);
       until (WebBrowser.ReadyState = READYSTATE_COMPLETE) and (Not WebBrowser.Busy);
       if WebBrowser.Document.QueryInterface(IPersistStreamInit,
         PersistStreamInit) = S_OK then
       begin
         if PersistStreamInit.InitNew = S_OK then
         begin
           MemoryStream:= TMemoryStream.Create;
           try
             MemoryStream.CopyFrom(Stream, 0);
             MemoryStream.Position:= 0;
           except
             MemoryStream.Free;
             raise;
           end;
           StreamAdapter:= TStreamAdapter.Create(MemoryStream, soOwned);
           PersistStreamInit.Load(StreamAdapter);
           //以下代码用于屏蔽经常出现的网页脚本执行错误
           (WebBrowser.Document as IHTMLDocument2).body.insertAdjacentHTML('afterbegin',
           '<SCRIPT For=''window'' Event=''onerror''>var noOp = null;</SCRIPT>');
         end;
       end;
    end;