2013-05-10 6 views
0

Если создать п Tabsheets во время выполнения и создать один WebBrowser внутри каждого Tabsheet, используя такой метод, как:Как обратиться к конкретному экземпляру twebbrowser? - Delphi

 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; 

Когда один из Tabsheet например активен, как я мог знать, которым WebBrowser внутри него ?? Образец:

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

Спасибо!

+0

Нельзя отливать, если это вообще возможно. Поэтому не пишите crm.Parent: = TWinControl (ts); потому что это сделает ваш код скомпилированным независимо от того, что на самом деле. Просто удалите бросок. В случаях, когда требуется бросок, используйте оператор as и, таким образом, проверяйте время выполнения. –

ответ

1

Свойство Controls оконного элемента управления позволяет получить каждое дочернее управление. Поскольку эти дети могут быть любым потомком TControl, вам нужно будет отправить его в TWebBrowser. Используйте оператора as, чтобы воспользоваться проверкой срока действия отливки:

procedure navigateToActiveTabsheet(url: string); 
var 
    wb: TWebBrowser; 
begin  
    wb := pageControl.ActivePage.Controls[0] as TWebBrowser; 
    wb.Navigate(url); 
end; 
0
var 
    WB: TWebBrowser; 

WB := TWebBrowser(pageControl.ActivePage.Controls[0]); 
Смежные вопросы