var
    WebMDIPage : TWebMDI;
    Tabpage : TsTabSheet;
begin    
    nTab := nTab + 1;
    TabPage := TsTabSheet.Create(PageControl1);
    TabPage.Align := alClient;
    Tabpage.PageControl := PageControl1;
    Tabpage.Tag := nTab;
    WebMDIPage := TWebMDI.Create(TabPage);
    WebMDIPage.InsertControl(Tabpage);
    Windows.SetParent(WebMDIPage.Handle, TabPage.Handle);
    WebMDIPage.Tag := nTab;
    WebMDIPage.BorderStyle := bsNone;
    WebMDIPage.WindowState := wsMaximized;
    WebMDIPage.Show;
    WebMDIPage.WebBrowser1.Navigate('www.google.com');
出了什么问题呢?

解决方案 »

  1.   

    试过没有问题(D7),不知道LZ用的是哪个版本的Delphi。先建2个Form: TForm1是主form, TForm2是子form。
    在TForm2上放一个Lable,将TForm2的visible打成false。
    在TForm1上放一个TabPage,其Align设置成Client。在TForm1上再放一个菜单。然后在菜单项的单击事件中编写如下的代码
    var
      child: TForm2;
      ts: TTabSheet;
    begin
      number := number + 1;
      ts:= TTabSheet.Create(self.PageControl1);
      ts.Caption := 'hello '+IntToStr(number);
      ts.PageControl := self.PageControl1;
      child := TForm2.Create(ts);
      child.Visible := false;
      child.Parent := ts;
      child.Label1.Caption := IntToStr(number);
      child.BorderStyle := bsNone;
      child.WindowState := wsMaximized;
      child.Show ;
      ts.Show;
    end;这里我没有用windows.setParent,因为那个好像没有用。
    如果不设置 child.Parent := ts; 这个窗口始终嵌不进去。
    我也没有用child.insertControl(ts), 因为这样会导致错误。另外,可以考虑将WebForm做成Frame来使用,这样会简单一点。
      

  2.   

    不知楼主是否是在做多页浏览器,我昨天在做,也碰到了这个问题,后来解决了,这个是我的代码,用于动态创建TabSheet
    var
        NewTabSheet : TTabSheet;
        NewJFrame : TFormURL;
    begin
          NewTabSheet := TTabSheet.Create(JPageControl);
          NewTabSheet.PageControl := JPageControl(这个是我自己写的PageControl,目的是为了增加Click和DblClick事件);      NewJFrame := TFormURL.Create(NewTabSheet);
          NewJFrame.Parent := NewTabSheet;
          NewJFrame.Align := alClient;
          NewJFrame.Visible := True;
          NewTabSheet.Show;
          NewJFrame.WebURL.Navigate('about:blank');    //about:blank
    end;
    这个代码在D7和D2006下可以成功运行