我在pagecontrol中,都是动态创建一个page页,而且在每个page页中动态创建一个Twebbrowser,在别的事件里不能得到这个Twebbrowser控件的,为什么?
代码如下:
procedure TTdlg_URLTree.addpage1Click(Sender: TObject);
var
TabSheet1: TTabSheet;
WebBrowseradd: TWebBrowser;
Flag,Frame,pData,Header: OLEVariant;
count : Integer;
strName: string ;
begin TabSheet1:=TTabSheet.Create(self);
TabSheet1.PageControl:=PageControl1;
TabSheet1.Caption:='Page1';
TabSheet1.Name := 'eeeeeeee' ;
WebBrowseradd:= TWebBrowser.Create(self) ;
WebBrowseradd.Align:=alClient;
TControl(WebBrowseradd).Parent:=TabSheet1;
webname := WebBrowseradd.Name ;
// WebBrowseradd.Name := 'afaf' ; // 这个不能修改,为只读属性
showmessage(WebBrowseradd.Name);
//这里显示名字为 : 'Microsoft Web 浏览器控件'
end。
在动态创建中加上这句,可以的,没问题,说明控件已经创建成功了。
WebBrowseradd.Navigate('http://www.sohu.com');而在下面问题出现了。
procedure TTdlg_URLTree.browerIE1Click(Sender: TObject);
var
tabsheetactive : Ttabsheet ;
webName : string ;
begin
webName := 'Microsoft Web 浏览器控件' ;
tabsheetactive := pagecontrol1.ActivePage ;
if ( tabsheetactive <> nil ) then
showmessage('ddddd') ;
上面这个正常。 找到了tabsheetactive 。
下面这个就找不到。
if TWebBrowser(tabsheetactive.pagecontrol1.FindComponent(webname)) <> nil then
begin
// 不会进入到这里 。为什么啊。
showmessage('abcd') ;
TWebBrowser(tabsheetactive.FindComponent(webName)).Navigate('http://www.sohu.com');
end;end;
end;
代码如下:
procedure TTdlg_URLTree.addpage1Click(Sender: TObject);
var
TabSheet1: TTabSheet;
WebBrowseradd: TWebBrowser;
Flag,Frame,pData,Header: OLEVariant;
count : Integer;
strName: string ;
begin TabSheet1:=TTabSheet.Create(self);
TabSheet1.PageControl:=PageControl1;
TabSheet1.Caption:='Page1';
TabSheet1.Name := 'eeeeeeee' ;
WebBrowseradd:= TWebBrowser.Create(self) ;
WebBrowseradd.Align:=alClient;
TControl(WebBrowseradd).Parent:=TabSheet1;
webname := WebBrowseradd.Name ;
// WebBrowseradd.Name := 'afaf' ; // 这个不能修改,为只读属性
showmessage(WebBrowseradd.Name);
//这里显示名字为 : 'Microsoft Web 浏览器控件'
end。
在动态创建中加上这句,可以的,没问题,说明控件已经创建成功了。
WebBrowseradd.Navigate('http://www.sohu.com');而在下面问题出现了。
procedure TTdlg_URLTree.browerIE1Click(Sender: TObject);
var
tabsheetactive : Ttabsheet ;
webName : string ;
begin
webName := 'Microsoft Web 浏览器控件' ;
tabsheetactive := pagecontrol1.ActivePage ;
if ( tabsheetactive <> nil ) then
showmessage('ddddd') ;
上面这个正常。 找到了tabsheetactive 。
下面这个就找不到。
if TWebBrowser(tabsheetactive.pagecontrol1.FindComponent(webname)) <> nil then
begin
// 不会进入到这里 。为什么啊。
showmessage('abcd') ;
TWebBrowser(tabsheetactive.FindComponent(webName)).Navigate('http://www.sohu.com');
end;end;
end;
(PageControl1.ActivePage.Controls[0] as TWebBrowser).Navigate('http://www.sohu.com');//依我猜想,你做的跟我那个东东一样一个TabSheet中,只有一个Child,而这个Child就是WebBrowser:)
var
BB : TWebBrowser;
begin
BB := TWebBrowser.Create(Self);
TWinControl(BB).Name := 'AAA';
if Self.FindComponent('AAA')<>NIl then begin
ShowMessage('找到了^_^');
end;
end;