请问动态如何获得popupmenu的高度?因为popupmenu要换皮肤,所以它的高度回改变,我想做出上拉的效果需要获得它的高度!改怎么做!

解决方案 »

  1.   

    popupmenu 有个popuppoint属性。在ONPOPUP event里写
    var
      pt : TPoint;
    begin
      pt := popupmenu1.popuppoint;
      pt := Form1.ScreentoClient(pt);
    end;
    FORM1是popupmenu的container。如果要获得屏幕坐标,不需要第二句
      

  2.   

    给你个函数
    Function TForm1.GetPopMenuHeight(Sender: TObject): Integer;
    var
      i,mHeight,sHeight: Integer;
      vRect: TRect;
    begin
      sHeight := 0;
      mHeight := 0;
      for i := 0 to PopupMenu1.Items.Count - 1 do
      begin
        GetMenuItemRect(self.Handle, PopupMenu1.Handle, PopupMenu1.Items[i].MenuIndex, vRect);
        mHeight := vRect.Bottom - vRect.Top;    //每个菜单项的高度
        sHeight := sHeight + mHeight;
      end;
      result := sHeight;
    end;