我有一个PageControl1,它上面有TabSheet1,TabSheet2,TabSheet3,TabSheet4
,TabSheet5,TabSheet6,TabSheet7这几个TabSheet,现在我的问题是当TabSheet2,
TabSheet4,TabSheet5这几个TabSheet被隐藏了,编译之后界面上就留下了TabSheet1,
TabSheet3,TabSheet6,TabSheet7这几个TabSheet,我现在就是要根据编译之后顺序来获得它们的ActivePageIndex值,也就是说TabSheet1,TabSheet3,TabSheet6,
TabSheet7的ActivePageIndex值分别是0,1,2,3;
我这样说应该说的比较清楚了吧,还请各位高手帮帮忙

解决方案 »

  1.   

    我有一个PageControl1,它上面有TabSheet1,TabSheet2,TabSheet3,TabSheet4
    ,TabSheet5,TabSheet6,TabSheet7这几个TabSheet,现在我的问题是当TabSheet2,
    TabSheet4,TabSheet5这几个TabSheet被隐藏了,编译之后界面上就留下了TabSheet1,
    TabSheet3,TabSheet6,TabSheet7这几个TabSheet,??好像这个就已经实现不了,你试过没有。
    用动态创建的不是更好吗。
    for i:=0 to 3 do
      with ttabsheet.Create(self)do
      begin
       pagecontrol:=pagecontrol1;
       caption:='新增页'+inttostr(i);
      

  2.   

    可是你第一个就似乎实现不了,我试过不行,不知有谁试过可以的。要不你限制用户访部2,4,5这几个页面呀。
    然后是到一定条件才让他们访问:
    在OnChange事件中
    写入你的判断,如果是换到你要禁止的页面中就,不让他们换
      

  3.   

    function FindNextPage(CurPage: TTabSheet; GoForward, CheckTabVisible: Boolean): TTabSheet;
      

  4.   

    现在我的问题是当TabSheet2,
    TabSheet4,TabSheet5这几个TabSheet被隐藏了,
    // 如果确实不需要这些页的话 可以delete掉...
    yourpage.Pages[x].destory.
      

  5.   

    先问,这个问题是不是可以理解成第几个显示的TabSheet?function TabVisibleOrder(TabSheetIndex:integer):integer;
    var i,j:integer;
    begin
      j :=-1;
      for i:=0 to TabSheetIndex do  
        if PageControl1.Pages[i].Visible then
          inc(j);
      Result :=j;
    // when j= -1 then no TabVisible
    end;
      

  6.   

    比较原始的方法
    function getTabIndex(aTAbSheet:TTabSheet):integer;
    begin
       case aTabSheet.pageindex of
       0: result := 0;
       2: result := 1;
       5: result := 2;
       6: result := 3;
       other result := -1;
       end;
    end;
      

  7.   

    不好意思刚刚网络出现问题,谢谢各位的回答
     iamduo(狄奥):应该可以你那样理解,
     beyondtkl(大龙驹宣言:抵制日货,从我做起):不同人的操作的TabSheet是不同的
      myy(): 能不能解释一下
      linzhengqun(风) :我还没试过,要是试过那我还来问什么啊
      

  8.   

    wangjintu(wangjin) 你的这个方法不太行啊
      

  9.   

    function FindNextPage(CurPage: TTabSheet; GoForward, CheckTabVisible: Boolean): TTabSheet;PageControl1.FindNextPage(当前页,向前向后?,检查可见行?);照抄帮助。
    不知楼主的delphi是什么版本的,help文件都没带么? ^_^
      

  10.   

    不同人的操作的TabSheet是不同的
    // 我的意思是说 如果你能确定某些人只能用哪些Page的话 其他不用的完全可以删除
    你实在不行 可以用 PCtrl.Pages[x].Name 或者其他的来判断... 不是很复杂..
      

  11.   

    按照显示顺序重新索引;procedure RefreshTabOrder(PC:TPageControl);
    var 
         i,j:integer;
         ShowS:array[0..100] of TTabSheet;
    begin
      j:=-1;
      for i:=0 to PC.PageCount-1 do  
        if PC.Pages[i].TabVisible then 
        begin
             inc(j);
             ShowS[j]:=PC.Pages[i];
        end;
      for i:=0 to j do
      begin
           ShowS[j].PageIndex:=i;
      end;
    end;
      

  12.   

    PageControl1中好像不能隐藏TabSheet1吧试试nodebook.