我使用form1上一个webbrower,form2上一个webbrower,在form1中点击链接在新窗口打开,想调用form2来显示,用下面的事件,可是form2中的webbrower不能显示链接文件!用form1.webbrower1.BeforeNavigate2传递url出来,却总是form1中页面的地址,并非点击链接的目标地址!
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
begin
 sender:=form2.WebBrowser1;
 cancel:=true;
 form2.Show ;
end;

解决方案 »

  1.   

    //测试如下代码~~
    procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
      var ppDisp: IDispatch; var Cancel: WordBool);
    begin
      Cancel := True;  Form2.WebBrowser1.RegisterAsBrowser := True;
      ppDisp := Form2.WebBrowser1.ControlInterface;
      Form2.Show;
    end;
      

  2.   

    还是不行啊,form2.webbrower中什么都没有
    如果cancel:=true;去掉,IE就可以正常显示了.form2.webbrower始终没反应啊!
      

  3.   

    procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
      var ppDisp: IDispatch; var Cancel: WordBool);
    begin
      Form2.WebBrowser1.RegisterAsBrowser := True;
      Form2.WebBrowser1.Navigate('about:blank');
      Application.ProcessMessages;
      ppDisp := Form2.WebBrowser1.ControlInterface;
      Form2.Show;
    end;
      

  4.   

    原理没有什么好说的,Windows和IE都M$开发,所以你就要遵照它制订的游戏规则~~
    你已经知道使用WebBrowser1NewWindow2事件~~
    然后其他的就到网上搜,一搜就一堆,然后在选,就这样问题就解决了~~
      

  5.   

    还有啊,当form2最小化后,第二次调用时,它怎么才能复原并成为当前窗口呢?
      

  6.   

    Form2.WindowState := wsNormal;
      Form2.Show;
      

  7.   

    怎么弄都不行啊,把它再hide然后再show,也是不行,就第一次能正常出现.?