我想编一个Html浏览的程序,用TWebBrowser控件。
主要功能有浏览、编辑和修改源码?我希望三个功能都可以在一个WebBrowser控件中完成,三项功能之间可以互相切换。(就像网文快捕一样的)前两项之间切换我都已经做到了,可是不知道如何用WebBrowser在显示当前html和其源码之间切换?

解决方案 »

  1.   

    function GetHTMLCode(WB: IWebbrowser2; ACode: TStrings): Boolean; 
    var
     ps: IPersistStreamInit;
     s: string; 
     ss: TStringStream; 
     sa: IStream; 
    begin 
     ps := WB.document as IPersistStreamInit; 
     s := ''; 
     ss := TStringStream.Create(s); 
     try 
       sa:= TStreamAdapter.Create(ss, soReference) as IStream; 
       Result := Succeeded(ps.Save(sa, Bool(True))); 
       if Result then ACode.Add(ss.Datastring); 
     finally 
       ss.Free; 
     end; 
    end;
      

  2.   

    TechnoFantasy(www.applevb.com)你这段代码只是把html的源码取出来了,但怎么用TWebBrowser来显示源码,并且能够编辑啊?(网文快捕就能实现)
      

  3.   

    我已经搞懂了网文快捕了,他是用了一个RichEdit编辑源码的,并不是用TWebBrowser显示源码的,上面这位朋友可否给我一个直接用WebBrowser调内存中的源码显示Html的例子,我就结帖加分了!谢谢!
      

  4.   

    ////////////////////////////////////////////////////////////////////////////////
    // 说明:直接写WebBrowser类
    // 参数: WebBrowser --  准备要写的类
    //       Html --  写入的内容
    // 返回:无返回值
    ////////////////////////////////////////////////////////////////////////////////procedure SetHtml(const WebBrowser:TWebBrowser; const Html: string);
    var
       Stream: IStream;
       hHTMLText: HGLOBAL;
       psi: IPersistStreamInit;
    begin
       if not Assigned(WebBrowser.Document) then Exit;
       hHTMLText := GlobalAlloc(GPTR, Length(Html) + 1);
       if 0 = hHTMLText then RaiseLastWin32Error;
       CopyMemory(Pointer(hHTMLText),
       PChar(Html), Length(Html));
       OleCheck(CreateStreamOnHGlobal(hHTMLText, True, Stream));
       try
        OleCheck(WebBrowser.Document.
        QueryInterface(IPersistStreamInit, psi));
        try
         OleCheck(psi.InitNew);
         OleCheck(psi.Load(Stream));
        finally
         psi := nil;
        end;
      finally
        Stream := nil;
      end;
    end;
      

  5.   

    或者用这个打开一个HTML文件
    WebBrowser1.Navigate(HTMLNAME)