Recent

Author Topic: Creating tabbed browser?  (Read 5881 times)

Timewarp

  • Full Member
  • ***
  • Posts: 144
Creating tabbed browser?
« on: July 14, 2012, 09:35:03 am »
I have pagecontrol and create tabs like this:

Code: [Select]
NewTab:=TTabSheet.Create(PageControl1);
with NewTab do
  begin
   PageControl:=PageControl1;
   Parent:=PageControl1;
   Visible:=true;
  end;
activexcontainer1:=Tactivexcontainer.Create(NewTab);
Browser:=TEvsWebBrowser.Create(NewTab);
activexcontainer1.ComServer:=Browser.ComServer;
activexcontainer1.Align:=alClient;
activexcontainer1.Active:=true;
..

In Delphi I can navigate different browsers like this:

TWebbrowser(Pagecontrol1.activepage.controls[0]).navigate(...

But I have problems getting TEvsWebBrowser this way?

These don't work:

TActivexcontainer(Pagecontrol1.activepage.controls[0]).comserver.navigate(..
TEvsWebBrowser(Pagecontrol1.activepage.controls[0]).comserver.navigate(..

I can only do this: TActivexcontainer(Pagecontrol1.activepage.controls[0]).vobject.navigate(...

But that is IDispatch one. Is there any way to get TEvsWebBrowser from TActivexcontainer?

ludob

  • Hero Member
  • *****
  • Posts: 1173
Re: Creating tabbed browser?
« Reply #1 on: July 14, 2012, 01:48:58 pm »
Code: [Select]
Is there any way to get TEvsWebBrowser from TActivexcontainer?Yes, but a little more convoluted than your Delphi example:
Code: [Select]
(TActiveXContainer(Pagecontrol1.activepage.controls[0]).ComServer as IWebBrowser2).Navigate(...) So the steps are:
-cast controls[0] to TActiveXContainer
-get ComServer which is just a IDispatch
-get IWebBrowser2 from ComServer. Navigate is a method of IWebBrowser. So  'as IWebBrowser' would work also.

Delphi creates class stubs such as TWebbrowser that mask the interface so that you can use a simpler typecast from a plain control to a TWebbrowser. The fpc type library importer does not create these stubs. In cases like this a little bit of footwork is needed to get to the same result.

Timewarp

  • Full Member
  • ***
  • Posts: 144
Re: Creating tabbed browser?
« Reply #2 on: July 18, 2012, 04:27:26 pm »
That does it, thanks!

I also have cases, where I need Tactivexcontainer from TEvsWebbrowser?

For example procedure dosomething(WB: TActivexContainer);

Documentcomplete has asender and pDisp.

I would like to do: dosomething(TActiveXcontainer(asender)); but it crashes.

What would be correct way to do that?

Timewarp

  • Full Member
  • ***
  • Posts: 144
Re: Creating tabbed browser?
« Reply #3 on: August 06, 2012, 09:01:18 am »
I did solve problem like this
Code: [Select]
Browser:=TEvsWebBrowser.Create(ActivexContainer1);
..
..
dosomething(TEvsWebbrowser(Asender).owner as TActivexContainer);

 

TinyPortal © 2005-2018