现在的位置: 首页 > 综合 > 正文

Delphi – WebBrowser用法几则浅谈

2011年11月22日 ⁄ 综合 ⁄ 共 1615字 ⁄ 字号 评论关闭

首先,新年了,祝福大家新年快乐,新的一年能学业和事业有成,家庭和身体都美好幸福。
在现在软件中,嵌入网页的案例月来也多了,这样界面设计也简单了。
下面我说说我自己在使用过程中学到的一些方法。
第一肯定是最简单的。//居然发现Writer的代码插件没有了,毕竟系统重装了。
WebBrowser1.Navigate('http://www.163.com');
这样可以直接打开网易了,可是俺家米有网,所以不能演示效果。

接下来说下,加载网页。
分三种情况:

  1. 以字符串的形式

    class procedure TMyIEUtil.LoadFromString(Web: IDispatch;
      const html: String);
    var
      ie:IWebBrowser2;
      flags,TargetFrameName,PostData,Headers:OleVariant;
    begin
      if not Assigned(Web) then
        Exit;
      if not Supports(Web,IWebBrowser2,ie) then
        raise EMyIEUtilWrongFormat.Create();
      ie.Navigate('about:'+ html,flags,TargetFrameName,PostData,Headers);
    end;

  2. 直接加载文件

    class procedure TMyIEUtil.LoadFromFile(Web: IDispatch;
      const FilePath: String);
    var
      ie:IWebBrowser2;
      flags,TargetFrameName,PostData,Headers:OleVariant;
    begin
      if not Assigned(Web) then
        Exit;
      if not FileExists(FilePath) then
        raise EMyIEUtilFileNotFound.Create();
      if not Supports(Web,IWebBrowser2,ie) then
        raise EMyIEUtilWrongFormat.Create();
      ie.Navigate(FilePath,flags,TargetFrameName,PostData,Headers);
    end;

  3. 从流中加载

    class procedure TMyIEUtil.LoadFromStream(Document: IDispatch; AStream: TStream);
    begin
      if not Assigned(Document) then
        Exit;
      AStream.Seek(0,soFromBeginning);
      (Document as IPersistStreamInit).Load(TStreamAdapter.Create(AStream));
    end;

在这3个函数里面前面2个函数中参数web必须支持IWebBrowser2这个接口,我们调用的时候可以这样
TMyIEUtil.LoadFromString(WebBrowser1.ControlInterface,'<b>Huang</b><u>Jacky</u>');
而最后一函数参数中Document必须支持IPersistStreamInit接口,调用:

var
  fs:TFileStream;
begin
  fs:=TFileStream.Create('C:\1.htm',fmOpenRead);
  try
    TMyIEUtil.LoadFromStream(WebBrowser1.Document,fs);
  finally
    fs.Free;
  end;
end;

在家无聊,随便写写。让大家见笑了。
重庆新闻频道的《新闻杂谈》不错,围观 小月月事件 被狂批,炒作。
那英警车开道取演出服。哈哈。
我只旁观,不评论,免得跨省。
在天朝,Nothing is impossible。

抱歉!评论已关闭.