使用TPageControl控件时,我已经想好在某个页面上的界面布局,但我又不想在程序加载时就显示它(不能将它先隐藏,因为我的这个页面不太常用,一开始就加载它浪费资源),当我准备使用它时,再动态加载一个新页面,新页面里怎样加载我想用的各种控件(如果能之前做了个Frame等之类的东西的话,那以这个新页面里怎样才能重用已经有的某个窗口呢?换句话说,在TPageControl页面上是否能加载一个窗体呢?

解决方案 »

  1.   

    你这个问题太大了,在TPageControl页面上加载一个窗体?给你一些提示:动态加页:var
      NewSheet:TTabSheet;
    begin
      NewSheet:=TTabSheet.Create(self);
      with NewSheet do
      begin
        PageControl := PageControl1;
        Caption:='PageCaption'+IntToStr(PageControl1.PageCount);
      end;
      PageControl1.ActivePageIndex:=PageControl1.PageCount-1;
    end;在页上动态加控件,如TMemo: with TMemo.Create(NewSheet) do
      begin
        Parent:=PageControl1.ActivePage;
      end;加载窗体?还不会!
      

  2.   

    如果是这样的话,最好的办法就是使用Frame了,把你的布局做成Frame,然后动态加载TPageControl页,并且在该页动态加载Frame。
      

  3.   

    在pagecontrol的tabsheet上加载form是可以的,改动如下:
    重载form的CreateParams函数加上ws_child风格;
    procedure TForm1.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.Style := Params.Style or WS_CHILD;
    end;
    创建完form对象后改变form的parent对象;
    form1.parent := tabsheet1;
    即可;
      

  4.   

    findcsdn(searchcsdn) ( ):这样真的可以吗?如果真能,那真是太感谢你了,我马上去试验。
      

  5.   

    我以前以为只能通过Frame进行重用某窗体呢