请教一个TWebBrowser的动态窗口的问题(100分)

  • 主题发起人 主题发起人 bincle
  • 开始时间 开始时间
B

bincle

Unregistered / Unconfirmed
GUEST, unregistred user!
初学TwenBrowser,想建一个动态WebBrowser,在网上看到一段代码,使用的是PageControl+WebBrowser

代码如下:

var
ntab:array of ttabsheet;
nweb:array of twebbrowser;
num:integer;

procedure newwin();
begin
setlength(ntab,num+1);
setlength(nweb,num+1);
//nhb[num]:=false;
//setlength(nhf,num+1);
//nhf[num]:=false;
ntab[num]:=ttabsheet.Create(nil);
//settab(frmChildWeb.PageControl1.PageCount+1);
ntab[num].PageControl:=frmChildWeb.PageControl1;
ntab[num].Name:='W'+inttostr(num);
ntab[num].Caption:=' ';
ntab[num].ImageIndex:=-1;
nweb[num]:=twebbrowser.Create(nil);
nweb[num].Navigate('about:blank');
nweb[num].Left:=0;
nweb[num].OnNewWindow2:=frmChildWeb.WebNewWindow;
nweb[num].OnTitleChange:=frmChildWeb.WebTitleChange;
nweb[num].Width:=frmChildWeb.PageControl1.Width;
nweb[num].Height:=frmChildWeb.PageControl1.Height-28;
ntab[num].InsertControl(nweb[num]);
nweb[num].OnCommandStateChange:=frmChildWeb.WebCommandStateChange;
nweb[num].OnStatusTextChange:=frmChildWeb.WebStatusTextChange;
if gne then
begin
frmChildWeb.pagecontrol1.ActivePage.ImageIndex:=-1;
frmChildWeb.PageControl1.ActivePage:=ntab[num];
frmChildWeb.pagecontrol1.ActivePage.ImageIndex:=1;
end;
num:=num+1;
end;

frmChildWeb是窗体名,它的出错如下:

[Error] dvbbs.pas(47): Undeclared identifier: 'WebNewWindow'
[Error] dvbbs.pas(48): Undeclared identifier: 'WebTitleChange'
[Error] dvbbs.pas(52): Undeclared identifier: 'WebCommandStateChange'
[Error] dvbbs.pas(53): Undeclared identifier: 'WebStatusTextChange'
[Error] dvbbs.pas(54): Undeclared identifier: 'gne'

WebNewWindow
WebTitleChange
WebCommandStateChagne
WebStatusChange
gne
都是自定义的过程(函数)

哪位大虾能帮忙补补这些缺过程或函数

或者介绍一篇动态创建WEBBROWSER的文章,或者源代码
 
procedure TfrmChildWeb.NewWindow2(Sender:TObject;var ppDisp:IDispatch;var Cancel:WordBool);
begin
setlength(ntab,num+1);
setlength(nweb,num+1);
//nhb[num]:=false;
//setlength(nhf,num+1);
//nhf[num]:=false;
ntab[num]:=ttabsheet.Create(nil);
//settab(frmChildWeb.PageControl1.PageCount+1);
ntab[num].PageControl:=frmChildWeb.PageControl1;
ntab[num].Name:='W'+inttostr(num);
ntab[num].Caption:=' ';
ntab[num].ImageIndex:=-1;
nweb[num]:=twebbrowser.Create(nil);
nweb[num].Navigate('about:blank');
nweb[num].Left:=0;
nweb[num].OnNewWindow2:=frmChildWeb.WebNewWindow;
nweb[num].OnTitleChange:=frmChildWeb.WebTitleChange;
nweb[num].Width:=frmChildWeb.PageControl1.Width;
nweb[num].Height:=frmChildWeb.PageControl1.Height-28;
ntab[num].InsertControl(nweb[num]);
nweb[num].OnCommandStateChange:=frmChildWeb.WebCommandStateChange;
nweb[num].OnStatusTextChange:=frmChildWeb.WebStatusTextChange;
if gne then
begin
frmChildWeb.pagecontrol1.ActivePage.ImageIndex:=-1;
frmChildWeb.PageControl1.ActivePage:=ntab[num];
frmChildWeb.pagecontrol1.ActivePage.ImageIndex:=1;
end;
ppDisp:=nweb[num].Application; //记住别忘了加上这行
num:=num+1;
end;

procedure TfrmChildWeb.TitleChange(Sender:TObject;const Text:WideString);
begin
frmChildWeb.Caption:=Text; //浏览网页时候标题的变化写到Form的标题上
end;

procedure TfrmChildWeb.CommandStateChange(Sender: TObject;Command: Integer; Enable: WordBool);
begin
if Command=CSC_NAVIGATEFORWARD then
tbForward.Enable:=Enable //前进功能有效
else if Command=CSC_NAVIGATEBACK then
tbBack.Enable:=Enable //后退功能有效
else if Command=CSC_NAVIGATESTOP then
tbStop.Enalbe:=Enable; //停止功能有效
//主要上面的以tb开头的都是ToolBar中的ToolButton
end;

procedure TfrmChildWeb.StatusTextChange(Sender:TObject;const Text:WideString);
begin
StatusBar1.Panels[0].Text:=Text; //把页面的变化反映到状态条中
end;

至于gne就不知道作者是什么东西了,你可以仔细看看他的代码,自己定义一个变量


 
后退
顶部