我动态创建一个tabSheet,然后放一个WebBrowser在上面,设置了WebBrowser的align属性为alClient,为什么不会自动根据tabSheet的大小来自动改变大小?而我不是动态创建的tabSheet和WebBrowser则不会出现这样的问题,大家帮我看看?放一个PageControl在form上,让它align:=alClient;function  TFormMain.CreatePage:boolean;
var
        MyTabSheet:TTabSheet;
        MyWebBrowser:TWebBrowser;
        MyPanel:TPanel;
begin
        Result:=true;        //创建一个TabSheet;
        MyTabSheet:=TTabSheet.Create(PageControl1);
        MyTabSheet.PageControl := PageControlData;
        MyTabSheet.Caption :='ttt';        //创建一个WebBrowser;
        WebBrowser:=TWebBrowser.Create(MyTabSheet);
        WebBrowser.ParentWindow :=MyTabSheet.Handle;
        WebBrowser.SetBounds(0,0,MyTabSheet.Width ,MyTabSheet.Height);
        WebBrowser.Navigate('http://www.sina.com.cn');
        WebBrowser.Align := alClient;end;

解决方案 »

  1.   

    看不出問題, 修改這句看看
    >>WebBrowser.ParentWindow :=MyTabSheet.Handle;
    WebBrowser.Parent :=MyTabSheet;
      

  2.   

    WebBrowser.Parent 是只读的。我在大富翁里面找了一些别人写的代码,都是这么用的,别人从来没有提出过说不能随Client的大小改变WebBrowser的问题。所以我怀疑一般情况下是可以的,是不是我的delphi本身的问题,我是delphi6,好像还是没打过补丁的版本。
      

  3.   

    ???????????????????????????????????????????????大家能不能抽几分钟帮我测试一下呢?看是不是delphi本身的问题?
      

  4.   

    我见过这样的问题
    其实是这句话有问题
    WebBrowser.ParentWindow :=MyTabSheet.Handle;//只要用了,WebBrowser.Align := alClient;就没有用,其它的控件也是这样
    --------------
    你也不用设置WebBrowser.Align := alClient;,直接用
      WebBrowser.SetBounds(0,0,MyTabSheet.Width,MyTabSheet.Height);
    其实底层也是调用这个函数的
      

  5.   

    我用的是Delphi7
    其他版本不清楚
      

  6.   

    其实我用了WebBrowser.SetBounds(0,0,MyTabSheet.Width,MyTabSheet.Height);但这个东东只是初始化的时候的样子,我拉动边框后,它居然不让WebBrowser改变大小,除非偶自己写onResize,奶奶的。不过偶现在已经解决了。
    不要用WebBrowser.ParentWindow :=MyTabSheet.Handle了。而用
    tabsheet.InsertControl(webBrowser);就可以了。
    奶奶个胸的,花了我几个小时。
      

  7.   

    为什么大富翁里面别人的代码都是设置的WebBrowser.ParentWindow :=MyTabSheet.Handle,怎么就没人出现偶这么弱智的问题?郁闷!