Tengo un TListView que contiene cien elementos dentro de TVertScrollBox. Quería establecer la ViewportPosition del elemento seleccionado (hecho por código) en TListView. TListView no es desplazable, solo TVertScrollBox es desplazable.

Con los 100 elementos en TListView, no quiero que mi usuario se desplace por la lista completa de elementos, sino que, al seleccionarlos mediante el código, establece automáticamente ViewportPostion en el elemento seleccionado.

Estoy tratando de averiguar a partir del siguiente código cómo cambiar 0 al número de variable del elemento seleccionado.

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

Agradeceré cualquier ayuda o pista sobre esto.

1
RickyBelmont 18 oct. 2020 a las 09:53

1 respuesta

La mejor respuesta

Suponiendo que TListView está dentro de un TVertScrollBox y TListView.Height es lo suficientemente grande como para que no haya barra de desplazamiento en absoluto, entonces para tener la ventana gráfica configurada para que TListView número de elemento N esté en la parte superior (obtiene N al buscar datos), luego para desplazar el elemento N a la vista, haga lo siguiente:

VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X,
                                          ListView1.ItemAppearance.ItemHeight * N);
1
fpiette 18 oct. 2020 a las 09:04