0

実行時に n 個のタブシートを作成し、次のような方法を使用して各タブシート内に 1 つの 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;

タブシート インスタンスの 1 つがアクティブな場合、どの Web ブラウザがその中にあるかを知るにはどうすればよいですか? サンプル:

  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 に答える