我在delphi里面用WebBrowser嵌套了一个网页,但是网页里面还有弹出窗口事件。
我在嵌套这个网页的WebBrowser1的NewWindow2事件里面写啦一句ppDisp:=  wb2.Application;(如果wb2也是我直接先放进去的WebBrowser控件)可以把弹出的页面显示在我放这个wb2里面,但是当弹出窗口关闭后,wb2自动销毁,在点击弹出窗口就报错啦!所以我想在NewWindow2事件里面写自动创建WebBrowser。
代码:
procedure TForm37.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);var
  wb:TWebBrowser;begin
  wb := TWebBrowser.Create(Form37);
  wb.Visible:=true;
  wb.Align:=alClient;
  wb.ParentWindow:=Form37.Handle;
  ppDisp:=  wb.Application;
end;当点击的时候,会闪出一下弹出窗口,但是有不见啦,好像自己关闭或是隐藏啦一样!
怎么解决啊!

解决方案 »

  1.   

    乱,wb2不是一个已经存在的吗,为什么会销毁呢,你的代码跟wb2有啥关系
      

  2.   

    wb2是我放进去的!弹出窗体选择好东西后它会关闭!关闭wb2就不再啦!在打开弹出窗口就会报错啦!
    现在我是想用动态创建WebBrowser,这样就算弹出窗口用完后关闭掉,在点其他弹出窗口就不会报错
      

  3.   

    那你销毁完了,也得把ppDisp置会webrowser1呀,否则指向一个不存在的,肯定错
      

  4.   

    我现在就是想在NewWindow2事件里面动态创建webrowser,然后把ppDisp指向给动态创建好的这个webrowser,但是运行后点击,它闪一下又没啦!不知道怎么回事!
      

  5.   

    procedure TForm1.WebBrowserNewWindow2(Sender: TObject;
      var ppDisp: IDispatch; var Cancel: WordBool);
    var
      lsweb:TWebBrowser;
      nOld,nNew:Integer;
    begin
      if NewWinOk=True then begin
      NewWinOk:=False;
      with TTabSheet.Create(PageControl1) do begin
        PageControl := PageControl1;
        ShowHint:=False;
        Caption := '空白页';
      end;
      nNew:=PageControl1.PageCount-1;
      //创建TWebBrowser控件
      lsweb:=TWebBrowser.Create(self);
      with lsweb do begin
        Left := 0;
        Top := 0;
        Width := 745;
        Height := 575;
        Align := alClient;
        Visible:=True;
        OnProgressChange := WebBrowserProgressChange;
        OnNewWindow2 := WebBrowserNewWindow2;
        OnDocumentComplete := WebBrowserDocumentComplete;
        OnTitleChange:=WebBrowserTitleChange;
        OnStatusTextChange:=WebBrowserStatusTextChange;
        OnDownloadBegin:=WebBrowserDownloadBegin;
        OnDownloadComplete:=WebBrowserDownloadComplete;
      end;
      PageControl1.ActivePageIndex:=nNew;
      TWinControl(lsweb).Parent:=PageControl1.Pages[nNew];     //PageControl1.ActivePage;
      ppDisp:=lsweb.DefaultDispatch;
      NewWinOk:=True;
      end;
    end;
      

  6.   

    procedure TForm37.WebBrowser1NewWindow2(Sender: TObject;
      var ppDisp: IDispatch; var Cancel: WordBool);
    var wb:TWebBrowser;
    begin
      wb := TWebBrowser.Create(Form37);
      wb.Visible:=true;
      wb.Align:=alClient;
    //  wb.ParentWindow:=Form37.Handle;
      Twincontrol(wb).Parent:=Form37;
      ppDisp:= wb.Application;
    end;
    (广州仔)
      

  7.   

    改成这样就不会“闪出一下弹出窗口,但是有不见啦”,但你怎么FREE它呢?