procedure TfrmIE2.WebDocumentComplete(Sender: TObject; pDisp: IDispatch;
  var URL: OleVariant);
看见了吧,是OnDocumentComplete事件触发的下载完毕,还会告诉你是那个URL被下载完毕了,非常好用哦.因为页面中如果有IFrame,那么每个IFrame会触发一个DocumentComplete事件.那我们怎么判断是否全部下载完毕呢?嘿嘿,TWebBrowser控件不是有一个Busy属性的吗?procedure TfrmIE2.WebDocumentComplete(Sender: TObject; pDisp: IDispatch;
  var URL: OleVariant);
begin
  if not(Web.Busy) then begin
    ShowMessage('下载完毕');
  end;
end;
对于每次连接(不论是鼠标点击还是用Navigate2方法连接),TWebBrowser的流程是这样的:OnBeforeNavigate2           <--开始链接时会触发此事件
OnNavigateComplete2         <--成功的链接到此网页(以后才会有下面的事件)
OnDownloadBegin             <--开始下载
OnDownloadComplete          <--下载结束
OnDocumentComplete          <--页面下载完毕对于每个HTML页面,顺序都是如此.如果是Frame或IFrame的文件都会当成HTML页面处理.也就是说如果一个页面中有3个IFrame,那么总共会触发4次BeforeNavigate2事件.对于每个连接且需要显示出来的二进制文件(如*.gif,*.bmp,*.jpg...)都会触发一个DownloadBegin和DownloadComplete事件.

解决方案 »

  1.   

    谢谢答复,可惜的是OnDocumentComplete事件只在TWebBrowser的Visible为True时才会触发,而我的程序恰恰是False。至于Busy更不行,因为我是多个TWebBrowser同时工作的。
    谢谢 !!!
      

  2.   

    变通一下,你可以设置TWebBrowser的Visible=True, Height=0, width=0, tabstop=false,把他放在form的某个角落
      

  3.   

    请问一个问题,使用webbrowser控件时能不能不下载图片。
    只判断文本是否下载完毕?