使用PageControl控件时,可以采用右键-》new page创建一个新页(TabSheet),然后在该页面上放置所需的控件。我想问的是,如何可视化地创建一个TabSheet控件,并在上面进行界面设计,然后动态地添加到PageControl控件中?或者说PageControl如何动态地添加一个新页(要可以预先在上面编辑控件)?我在VCL库中找过了,都没有看到TTabSheet这个控件。如果只是创建一个TTabSheet控件的实例,再设置该实例的PageControl属性就可以动态地添加一个新页面,但因为是动态创建的,我无法在上面布局控件,所以虽然添加了一个新的页面,但却没有什么用处。各位高手帮忙看看,如何实现。先谢了。

解决方案 »

  1.   

    你可在 鼠标up的事件里根据鼠标坐标动态创建控件,用 控件=T控件类.create(Tabsheet.page[n]) ,应该是这样,你可以试试。
      

  2.   

    var
     T : TTabsheet;
    begin
      T := TTabsheet.Create(self);
      T.Caption := 'Tst';
      T.PageControl :=  PageControl1;
      T.TabVisible := True;
      PageControl1.ActivePage := T; //让T位于PageControl页的最前端
      

  3.   

    楼上这位所说的就是我所想的方法,可是怎么在新建的这个TabSheet上布局控件啊。能不能先可视化的创建一个TabSheet,再在上面放置控件,进行排版。再在程序中动态添加到PageControl中去?
      

  4.   

    自己变通一下啊,在一Panel排列控件var
     T : TTabsheet;
    begin
      T := TTabsheet.Create(self);
      T.Caption := 'Tst';
      T.PageControl :=  PageControl1;
      T.TabVisible := True;
      PageControl1.ActivePage := T;
      Panel1.Parent:=T;//设置其Parent为T
    end;
      

  5.   

    用 ttabcontrol 只显示标签的头部,点击tab后显示相应的panel.
    其实panel的代价和ttabsheet的代价几乎一样,他们都是从twincontrol派生的。
      

  6.   

    也可以先建好TTabSheet后,
    在view as text取各个控件的位置
    呵呵
    不过好像没劲了点
      

  7.   

    可以使用TTabsheet类呀,创建一个实例,后设置它的PageControl的属性,即是它所在的PageControl,再设置当前的活动页PageControl1.ActivePage即可,
    代码吗,可参照ehom(?!) 的;
    var
     T : TTabsheet;
    begin
      T := TTabsheet.Create(self);
      T.Caption := 'Tst';
      T.PageControl :=  PageControl1;
      T.TabVisible := True;
      PageControl1.ActivePage := T; //让T位于PageControl页的最前端