首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TListBox弹性滚动效应

TListBox弹性滚动效应
EN

Stack Overflow用户
提问于 2012-03-19 16:44:20
回答 1查看 2K关注 0票数 3

如何使用Delphi XE2 FireMonkey中的标准TListBox组件在列表上实现弹性滚动效果FireMonkey(用鼠标拖动滚动)?

EN

回答 1

Stack Overflow用户

发布于 2012-05-09 18:05:00

其中一个解决方案可能是使用TListBox.ChildrenCount-1并检查它的Position.Y是否小于TListBox.Parent.Height + TListBoxItem.height。此外,创建一个全局boolean变量,如"MouseIsDown“。

由于TListBox中的每一项实际上都是您可以直接处理和修改的子对象,所以简单地创建一个大的空TListBoxItem并确保它被设置为列表中的最后一个对象。

OnMouseDown中,将MouseIsDown设置为True,在OnMouseUp中,将其设置为false。

TFloatAnimation添加到TListBox中,并将插值属性设置为itElasticitBounce。当MouseIsDown设置为false时,禁用此效果,当MouseIsDown设置为true时,启用该效果。您需要做一些工作来将列表的位置重置为最后一个有效对象。也许在动画本身的OnFinish事件中这样做。

更合适的方法是计算最后一个对象的位置,并将动画的StopValue设置为该值。

本质上,您需要检查列表中的最终有效对象(即不是大型空白对象)的协调是否与列表框的高度匹配。如果是这样的话,并且鼠标没有关闭,那么动画就会被启用,滚动框就会反弹。如果它们匹配,并且鼠标被关闭,那么动画就会被禁用,因此OnFinish甚至不会被触发,因此滚动框不会重置它的位置。

您可能需要执行一个迭代嵌套过程来检查每个值是否为真。

它不会像iOS实现那样顺利,但是它应该为您提供一些可以使用的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9774206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档