代码如下:
1.
  //动态创建一个TWebBrowser对象
  fWebBrowser := TWebBrowser.Create(nil);
  //创建OnDocumentComplete的响应
  fWebBrowser.OnDocumentComplete := MyOnDocumentComplete;
2.
  //MyOnDocumentComplete事件的定义
  procedure TDoWater.OnDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL:OleVariant);
  begin
    Showmessage('Document Complete!');
  end
3.
//调用Navigate
  fWebBrowser.Navigate('........');问题:
  在3处,Navigate完了之后,并没有触发2处的MyOnDocumentComplete事件。
  如果把1处的 fWebBrowser.OnDocumentComplete := MyOnDocumentComplete
       改成:fWebBrowser.OnNavigate2Complete := MyOnDocumentComplete
  是可以触发MyOnDocumentComplete的。请问这是为什么?
谢谢!

解决方案 »

  1.   


    procedure TfrmMain.Test;
    var
      browser: TWebBrowser;
    begin
      browser := TWebBrowser.Create(Self);
      TControl(browser).Parent := Self;  //  browser.Parentwindow := Handle;
      browser.SetBounds(10, 10, 200, 200);
      browser.OnDocumentComplete := DoDocumentComplete;
      browser.Show;
      browser.Navigate('http://www.google.com');
      while browser.Busy do
      begin
        Application.ProcessMessages;
      end;
    end;