我有一个TListView
,其中包含一些显示工具提示的专门区域。因为我无法通过设计在TListView
上定义特定区域,以显示每Subitem
以上的工具提示。
所以我创建了一个结构,其中包含它们的位置以及工具提示(提示)。这部分工作正常。但是,这些位置相对于TListView
位于其顶部,因此一旦用户滚动,MousePos
仍然引用TListView
的完整可见,无论TListView
在何处{{} 1}}滚动到。
这是有道理的;但是我想在Y坐标中添加用户向下滚动的距离。 (我也喜欢对X坐标做同样的事情,但那不太相关。)但据我所知,A)TListView
没有机制来检测这个和B大多数谈论TListView
和滚动的指南都指的是捕捉正在发生的滚动 ,而不是在我的情况下,在不同的事件中(在这种情况下,在鼠标移动时)。
那么,如果不在滚动事件中,我如何检测或计算用户滚动的距离?
答案 0 :(得分:6)
有一种机制:ListView.ViewOrigin
。
读取ViewOrigin以确定列表图像的逻辑原点。 如果未滚动列表视图,则ViewOrigin为(0,0)。除此以外, 使用x坐标确定视图的像素数 水平滚动,y坐标确定数量 像素视图垂直滚动。
var
Pt: TPoint;
begin
Pt := ListView1.ViewOrigin;
这仅适用于您的列表视图处于vsIcon
或vsSmallIcon
视图样式的情况。 (您似乎没有提到您正在使用的视图样式)。尽管如此,通过这里的简单测试,看起来它也适用于vsReport
风格。 ViewOrigin.Y提供与TScrollInfo
调用检索到的GetScrollInfo
'nPos'完全相同的值。