如果在运行时创建了一个Tabsheets,并使用以下方法在每个标签页中创建一个Web浏览器:
procedure createTab;
var crm: TWebbrowser;
var ts: TsTabSheet;
begin
//Instance of tabsheet
ts := TsTabSheet.Create(pageControl);
ts.PageControl := pageControl;
//Instance of webbrowser
crm := TWebbrowser.Create(ts);
crm.Parent := TWinControl(ts);
crm.Align := alClient;
end;
当其中一个标签页实例处于活动状态时,我怎么知道它内部有webbrowser?样品:
procedure navigateToActiveTabsheet(url: string);
begin
//TO DO - How navigate to webbrowser inside active tabsheet?
end;
谢谢!
答案 0 :(得分:1)
窗口控件的Controls属性允许您获取每个子控件。因为这些孩子可以是任何TControl后代,所以你需要转换为TWebBrowser。使用as运算符可以从演员的运行时有效性检查中受益:
procedure navigateToActiveTabsheet(url: string);
var
wb: TWebBrowser;
begin
wb := pageControl.ActivePage.Controls[0] as TWebBrowser;
wb.Navigate(url);
end;
答案 1 :(得分:0)
var
WB: TWebBrowser;
WB := TWebBrowser(pageControl.ActivePage.Controls[0]);