0

如果我在运行时创建 n 个选项卡并使用以下方法在每个选项卡内创建一个 Webbrowser:

        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;

当其中一个选项卡实例处于活动状态时,我怎么知道其中包含哪个网络浏览器?样本:

  procedure navigateToActiveTabsheet(url: string);
          begin
           //TO DO - How navigate to webbrowser inside active tabsheet?
          end;
4

2 回答 2

1

窗口控件的 Controls 属性允许您获取每个子控件。因为这些孩子可以是任何 TControl 后代,所以您需要强制转换为 TWebBrowser。使用 as 运算符从强制转换的运行时有效性检查中受益:

procedure navigateToActiveTabsheet(url: string); 
var
  wb: TWebBrowser;
begin    
  wb := pageControl.ActivePage.Controls[0] as TWebBrowser;
  wb.Navigate(url);
end;
于 2013-05-11T07:01:34.403 回答
0
var
  WB: TWebBrowser;

WB := TWebBrowser(pageControl.ActivePage.Controls[0]);
于 2013-05-10T22:57:41.347 回答