for i := pagecontrol1.PageCount - 1 downto 1 do
begin
  pagecontrol1.Pages[i].TabVisible := False; // this is hide
  //pagecontrol1.Pages[i].Free; // this if free
end;
pagecontrol1.ActivePageIndex := 0;

解决方案 »

  1.   

    我用 begin
      ts := TTabSheet.Create(self);
      with ts do
      begin
        i:=i+1;
        PageControl:= PageControl1;
        Caption := 'a'+inttostr(i);
        PageControl.ActivePage:=PageControl.Pages[i-1];
          end;
    建立新的tabsheet!
    var
      i: Integer;
    begin
      for i := PageControl1.PageCount - 1 downto 1 do
        PageControls.Pages[i].Free;
    end;
    关闭!
    但我原先新建可以的,但关闭以后就再新建就出错了
      

  2.   

    关闭过程把变量 i 换成其他的,如:var
      m: Integer;
    begin
      for m := PageControl1.PageCount - 1 downto 1 do
        PageControl1.Pages[m].Free;
    end;
      

  3.   

    新建中
    i 的定义呢?
    如果 i 是全局变量,那么它在删除时有没有跟着变?
    也许你应该把删除里的i定义去掉,强迫它使用全局变量
      

  4.   

    不同意yyfhz(火山):
    决对不应该也不必要使用全局变量.
    创建TabSheet:
    var
      ts: TTabSheet;
      i:Integer;
    begin
      i := PageControl1.PageCount;//加上这一句
      ts := TTabSheet.Create(self);
      with ts do
      begin
        i:=i+1;
        PageControl:= PageControl1;
        Caption := 'a'+inttostr(i);
        PageControl.ActivePage:=PageControl.Pages[i-1];
      end;
    end;
    删除不变:
    var
      i: Integer;
    begin
      for i := PageControl1.PageCount - 1 downto 1 do
        PageControl1.Pages[i].Free;
    end;
    就没有问题了.