当点击PageControl的title栏(也就是显示tabsheet的caption的那里), 弹出popupmenu1...点击PageControl的其他地方时不要弹出来喔...

解决方案 »

  1.   

    我暂时没有想到什么好办法,建议就直接在那个title区域放个label,然后连popupmenu1。
      

  2.   

    给PageControl设置个PopupMenu
    然后建一个空的PopupMenu,不添加子菜单的
    然后选中每个tabSheet,把他们的PopupMenu设置为空PopupMenu
      

  3.   


    那tabsheet的位置变了呢 
    或者是又添加一个tabsheet  
    label这种方法弊端太多了 
      

  4.   


    代码写在PageControl的MouseUp事件中 
    Delphi(Pascal) code
    procedure TForm1.pgc1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      i:Integer;
      R:TRect;
      p:TPoint;
    begin
      GetCursorPos(p);
      for i := 0 to pgc1.PageCount - 1 do
      begin
        R := pgc1.TabRect(i);
        if (R.Left<=X) and (R.Right>=X) and (R.Top<=Y) and (R.Bottom>=Y) then
        begin
          pgc1.ActivePageIndex := i;
          pm1.Popup(p.X,p.Y);//弹出菜单
          break;
        end;
      end;
    end;
      

  5.   

    bdmh,你好.    R := pgc1.TabRect(i);  编译这一行通不过....
      

  6.   

    虽然wintergoes的方法非常之巧妙,但我还是想用bdmh的方法...
    因为bdmh可以捕捉到当前点击的tabsheet....
      

  7.   

    编译不通过是pagecontrol的名称,我是pgc1,你得改成你自己的
      

  8.   

    是不是要uses 另外的单元?
      

  9.   

    [Pascal Error] Unit_Main.pas(1259): E2003 Undeclared identifier: 'TabRect'
      

  10.   


    ComCtrls单元的,不知你那有没有,应该有
    function TCustomTabControl.TabRect(Index: Integer): TRect;
    begin
      TabCtrl_GetItemRect(Handle, Index, Result);
    end;
      

  11.   

    回  bdmh   还是一样的,编译通不过....
      

  12.   

    看了一下
    PageControl  确实有 TabRect,
    RzPageControl 没有....
      

  13.   

    bdmh,jiap1723    没有TabRect,请问如何解决呢?
      

  14.   

    看TabRect 在rzpagecontrol是不是在protected 如果是的话 发布出来
      

  15.   

    RzPageControl 有它自己的判断方法,研究一下RzPageControl 的TabAtPos吧
      

  16.   

    RzPageControl 有它自己的判断方法,研究一下RzPageControl 的TabAtPos吧?