【发布时间】:2014-02-25 20:41:02
【问题描述】:
我需要更改列表框的速度在选择项目时滚动(按住鼠标左键),鼠标在列表框外移动。要复制该行为,请执行以下操作:
- 在表单上放置一个列表框(+- 250 x 200 奇数)。不要让它太大,否则滚动条在底部将不可见。
- 将列数设置为 3。
-
将以下代码添加到 FormCreate:
var I: Integer; begin for I := 0 to 200 do ListBox1.Items.Add('Item '+IntToStr(I)); end; 运行应用程序并确保底部的滚动条可见。现在在列表中的任何项目上单击并按住鼠标左键。移动鼠标,所选项目将根据鼠标光标下的项目而改变。问题是当鼠标移出列表框时,列表框会很快滚动,这在我的情况下是选择隐藏的项目所必需的。我正在尝试减慢滚动速度。
我了解这不是列表框的正常用法,并且该行为可能不完全符合标准 UI 指南。出于非常特定的目的需要它,问题是滚动速度让用户感到非常尴尬。
我已经使用拖放和计时器将一些东西放在一起,但这并不理想,因为控件周围的“命中”区域有点小。如果有一种开箱即用的方法,那就太好了。
【问题讨论】:
-
我会学习用户滚动鼠标滚轮。它对 Windows 7 有很好的效果 :)
-
不幸的是,滚轮在这种情况下不起作用。
-
我在这里遗漏了什么吗?我认为您的目标是获取客户端矩形视图之外的项目。那是你可以通过滚轮滚动的地方......
-
当我停止移动鼠标时,滚动停止。当再次移动而不释放按钮时,它会再次开始滚动。所以看起来控制滚动是可能的。无论如何,你不会发现任何开箱即用的东西。
-
“滚动条在底部” -> “在右边”?