如何用NewWindow2事件动态创建WebBrowser

zgr0803 2010-09-10 04:44:55
我在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;

当点击的时候,会闪出一下弹出窗口,但是有不见啦,好像自己关闭或是隐藏啦一样!
怎么解决啊!
...全文
453 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgr0803 2010-09-17
  • 打赏
  • 举报
回复
还是没有解决!
广州佬 2010-09-11
  • 打赏
  • 举报
回复
改成这样就不会“闪出一下弹出窗口,但是有不见啦”,但你怎么FREE它呢?
广州佬 2010-09-11
  • 打赏
  • 举报
回复
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;
(广州仔)
likeyrain 2010-09-11
  • 打赏
  • 举报
回复
ppDisp指向不对吧?
likeyrain 2010-09-11
  • 打赏
  • 举报
回复
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;
zgr0803 2010-09-10
  • 打赏
  • 举报
回复
我现在就是想在NewWindow2事件里面动态创建webrowser,然后把ppDisp指向给动态创建好的这个webrowser,但是运行后点击,它闪一下又没啦!不知道怎么回事!
bdmh 2010-09-10
  • 打赏
  • 举报
回复
那你销毁完了,也得把ppDisp置会webrowser1呀,否则指向一个不存在的,肯定错
zgr0803 2010-09-10
  • 打赏
  • 举报
回复
wb2是我放进去的!弹出窗体选择好东西后它会关闭!关闭wb2就不再啦!在打开弹出窗口就会报错啦!
现在我是想用动态创建WebBrowser,这样就算弹出窗口用完后关闭掉,在点其他弹出窗口就不会报错
bdmh 2010-09-10
  • 打赏
  • 举报
回复
乱,wb2不是一个已经存在的吗,为什么会销毁呢,你的代码跟wb2有啥关系

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧