这些人都哪去了丫~~~试试这样行不,PageControl1.ActivePage.PageControl.Free

解决方案 »

  1.   

    提供思路:当鼠标点击时取得activepageindex值送入变量,关闭变量所代表的页就可以了啊!
      

  2.   

    // 关闭指定页面,无论是否是当前页
    porcedure ClosePageIndex(index; integer);
    begin
      if index >= PangeControl1.PageCount then exit;
      PageControl1.Pages[1].TabVisible := False;
    end;// 关闭激活页面
    porcedure CloseActivePage;
    begin
      PageControl1.ActivePages.TabVisible := False;
    end;
      

  3.   

    不好意思,写错了一个地方:PageControl1.Pages[1].TabVisible := False;应为PageControl1.Pages[index].TabVisible := False;
      

  4.   

    不好意思;
    PageControl1.Pages[I].Free;
      

  5.   

    private
        { Private declarations }
        AllTabRect:array of TRect;
        CloseTabIndex:integer;
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i:integer;
    begin
      SetLength(AllTabRect,PageControl1.PageCount);
      for i:=0 to PageControl1.PageCount-1 do
        AllTabRect[i]:=PageControl1.TabRect(i);
    end;procedure TForm1.PageControl1ContextPopup(Sender: TObject;
      MousePos: TPoint; var Handled: Boolean);
    var
      i:integer;
    begin
      CloseTabIndex:=-1;
      for i:=0 to PageControl1.PageCount-1 do
      begin
        if (MousePos.x<=AllTabRect[i].Right) and (MousePos.x>=AllTabRect[i].Left) and
            (MousePos.y<=AllTabRect[i].Bottom) and (MousePos.y>=AllTabRect[i].Top) then
        begin
          CloseTabIndex:=i;
          break;
        end;
      end;
    end;procedure TForm1.N1Click(Sender: TObject);
    var
      i:integer;
    begin
      if CloseTabIndex<>-1 then
      begin
        PageControl1.Pages[CloseTabIndex].Destroy();
        SetLength(AllTabRect,0);
        SetLength(AllTabRect,PageControl1.PageCount);
        for i:=0 to PageControl1.PageCount-1 do
          AllTabRect[i]:=PageControl1.TabRect(i);
      end;
    end;