加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何计算用户在TListView中滚动的距离,而不是在用户滚

发布时间:2020-12-15 09:30:15 所属栏目:大数据 来源:网络整理
导读:我有一个TListView,其中包含一些显示工具提示的专门区域.因为我不能通过设计在TListView上定义特定区域来显示每个Subitem以上的工具提示. 所以我已经创建了一个结构,其中包含它们的位置以及工具提示(提示).这部分工作正常.但是,这些位置在TListView中相对于
我有一个TListView,其中包含一些显示工具提示的专门区域.因为我不能通过设计在TListView上定义特定区域来显示每个Subitem以上的工具提示.

所以我已经创建了一个结构,其中包含它们的位置以及工具提示(提示).这部分工作正常.但是,这些位置在TListView中相对于其顶部,因此一旦用户滚动,MousePos仍然引用TListView的完全可见,无论TListView滚动到何处.

那讲得通;但是我想在Y坐标中添加用户向下滚动的距离. (我也想对X坐标做同样的事情,但这不太相关.)但据我所知,A)TListView上没有机制可以检测到这一点而且B)大多数指南都在讨论TListView和滚动指的是捕获正在发生的滚动,而不是在我的情况下,在不同的事件期间(在这种情况下,在鼠标移动时).

那么我如何检测或计算用户在滚动事件中滚动的距离呢?

解决方法

有一种机制:ListView.ViewOrigin.

Read ViewOrigin to determine the logical origin of the list image.
When the list view is not scrolled,ViewOrigin is (0,0). Otherwise,
use the x coordinate to determine the number of pixels the view is
scrolled horizontally,and the y coordinate to determine the number of
pixels the view is scrolled vertically.

var
  Pt: TPoint;
begin
  Pt := ListView1.ViewOrigin;

仅当您的列表视图采用vsIcon或vsSmallIcon视图样式时,此方法才有效. (您似乎没有提到您正在使用的视图样式).不过在这里进行一个简单的测试,看起来它也适用于vsReport风格. ViewOrigin.Y给出了aGetScrollInfo调用检索到的TScrollInfo的’nPos’的完全相同的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读