代码之家  ›  专栏  ›  技术社区  ›  Roddy

如何将Delphi TPageControl的“tab index”转换为“page index”?

  •  5
  • Roddy  · 技术社区  · 15 年前

    我使用的是TPageControl,某些页面不可见。

    在大多数地方,我可以使用ActivePage index(或ActivePage本身)来获取当前页面,但我需要一个动态工具提示,它要求我确定哪个页面与特定的选项卡索引相关联。

    我可以明确地遍历页面,忽略那些可见的页面,但是感觉VCL中应该有一些东西已经为我做了这些。。。?

    3 回复  |  直到 15 年前
        1
  •  2
  •   BennyBechDk    15 年前

    function TPageControl.PageIndexFromTabIndex(TabIndex: Integer): Integer;
    

    那就是你想要的。

        2
  •  0
  •   user6150786    6 年前

    这个版本似乎有效:

    function PageIndexFromTabIndex(const pageControl : TPageControl; const TabIndex: Integer): Integer;
     var
        i : Integer;
     begin
       Result := TabIndex;
       for i := 0 to Pred(pageControl.PageCount) do
         begin
           if not pageControl.Pages[i].TabVisible then
             Inc(Result);
           if TabIndex = pageControl.Pages[i].TabIndex then
             break;
         end;
      end;
    
        3
  •  -1
  •   Leonardo Herrera    15 年前

    Here is an old article

    function TMyPageControl.GetPageIndexAtPos(X, Y: Integer) : Integer;
    const
       TCM_GETITEMRECT = $130A;
    var
       TabRect: TRect;
       j: Integer;    
    begin
       for j := 0 to PageCount - 1 do
       begin
         Perform(TCM_GETITEMRECT, j, LParam(@TabRect)) ;
         if PtInRect(TabRect, Point(X, Y)) then
         begin
           Result := j;
           exit;
         end;
       end;
       Result := -1;
    end;