如何引用twebbrowser的特定实例? - 德尔福

时间:2013-05-10 21:52:19

标签: delphi delphi-xe2

如果在运行时创建了一个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;

谢谢!

2 个答案:

答案 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]);