Delphi 如何在TVertScrollBox内设置TListView中所选项目的视口位置

Delphi 如何在TVertScrollBox内设置TListView中所选项目的视口位置,delphi,firemonkey,tlistview,Delphi,Firemonkey,Tlistview,我有一个TListView,在TVertScrollBox中包含100个项目。我想在TListView中设置所选项目的视口位置(通过代码完成)。TListView不可滚动,只有TVertScrollBox可滚动 对于TListView中的100个项目,我不希望用户滚动整个项目列表,而是在使用代码进行选择时,它会自动将ViewportPosition设置为selected item 我试图从下面的代码中找出如何将0更改为所选项目的可变编号 VertScrollBox1.ViewportPositi

我有一个TListView,在TVertScrollBox中包含100个项目。我想在TListView中设置所选项目的视口位置(通过代码完成)。TListView不可滚动,只有TVertScrollBox可滚动

对于TListView中的100个项目,我不希望用户滚动整个项目列表,而是在使用代码进行选择时,它会自动将ViewportPosition设置为selected item

我试图从下面的代码中找出如何将
0
更改为所选项目的可变编号

VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, 0);

我将非常感谢您提供的任何帮助或线索。

假设TListView位于TVertScrollBox和TListView中。高度足够大,因此根本没有滚动条,然后将视口设置为TListView项目编号N位于顶部(您通过搜索数据得到N),然后在视图中滚动项目N,您可以:

VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X,
                                          ListView1.ItemAppearance.ItemHeight * N);

这是有道理的。我试试看。尽管如此,我在TListView上还有其他可视组件,我可以将其考虑在内。我会就此回复您。如果您在listview上面有其他组件,只需将ListView1.Position.Y添加到计算值中。它变成(ListView1.ItemAppearance.ItemHeight*N)+ListView1.Position.YPerfect!我像你说的那样考虑了其余的视觉组件,效果很好!非常感谢你。