ListView 在 vsReport方式下,怎样得到一个 Subitems 的坐标或RECT(100分)

  • 主题发起人 乖乖兔
  • 开始时间

乖乖兔

Unregistered / Unconfirmed
GUEST, unregistred user!
ListView 在 vsReport方式下,怎样得到一个 Subitems 的坐标或 Rect

_______________________________________________
______|_________________|______________________
______|_________________|______________________
上面一个方框的坐标
 
可以这样做,稍微麻烦一点:
先用listitem.DisplayRect得到整个item的rect,然后根据每一列的宽度(这个很容易得到)
推算出subitems的rect
 
Delphi没提供这方面的方法:只能采用变通的方法;
Listview1.Columns[0].Width+Listview1.Left;为第一个subitem的left;
与此类似;
 
参见TMS控件组中的AdvListView控件,里面还有不少有用的函数
function GetItemRect(iItem, iSubItem: Integer): TRect;
var
Rect: TRect;
begin
ListView_GetSubItemRect(Self.Handle, iItem, iSubItem, LVIR_LABEL, @Rect);
Result := Rect;
end;
 
顶部