如何使listview显示中心的特定项目?

Mol*_*nik 4 delphi listview

是否有一种通用的方法将列表视图中的特定项目(例如1000中的500)放在其中心?现在我正在使用此代码:

lvData.Items[iIndex].MakeVisible(False);
Run Code Online (Sandbox Code Playgroud)

它很简单,但有一个缺陷 - 大部分所需的项目出现在列表视图的顶部或底部.是的我知道,手动滚动它并不是一件大事,但我使用它的方式(在图表上选择一个点并查看列表视图中附近点的值)会使这种行为有点不舒服.

Ser*_*yuz 10

您可以使用DisplayRect项目来确定它当前的位置.给定ListView1是列表视图,li是列表项并且RTRect变量

R := li.DisplayRect(drBounds);
ListView1.Scroll(0, R.Top - ListView1.ClientHeight div 2);
Run Code Online (Sandbox Code Playgroud)

如果有足够的项目,将在中心滚动项目.