我需要改变列表框被滚动的速度,当一个项目被选中(按住鼠标左键)并且鼠标移动到列表框外。要复制该行为,请执行以下操作:TListBox - 选定的项目滚动速度
- 在表单上放置一个列表框(+ - 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上有很好的效果:) – TLama
不幸的是,在这种情况下,滚轮不起作用。 – Graymatter
当我停止移动鼠标时,滚动停在这里。在不释放按钮的情况下再次移动时,它会再次开始滚动。所以看起来好像有可能控制滚动。无论如何,你不会找到任何开箱即用的东西。 –