Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   cómo saber en una listview el item que está visible (no seleccionado) en cada momento (https://www.clubdelphi.com/foros/showthread.php?t=40010)

igc 05-02-2007 13:55:16

cómo saber en una listview el item que está visible (no seleccionado) en cada momento
 
Hola a todos,
Tengo una listView con muchos elementos, y quisiera saber qué items están visibles en cada momento, no me refiero seleccionados, sino visibles, ya que tengo un scrollbar de la lista y no siempre están visibles todos.

Muchas gracias de antemano.

igc 16-02-2007 18:25:52

Hola a todos,

ya solucioné el problema.

En mi caso lo que quería es que cuando en la lista se mostrase un determinado elemento yo lo supiese de antemano (me refiero a una lista que tiene muchos elementos y en la que me desplazo con su scrollbar). Para conseguir esto hay dos eventos que son útiles:

onAdvancedCustomDrawItem (salta una vez dibujado el item de la lista)
onCustomDrawItem (salta antes de dibujar el item)

Mediante estos eventos se puede saber el item que se está dibujando.

Si lo que se desea es saber si un elemento se está visualizando o no, se puede optar por averiguar de ese item su posición en la lista y a compararla con el tamaño de la lista que se está visualizando, del siguiente modo:

ListView->Items->Item[x]->GetPosition().y < ListView->ClientHeight

También hay que tener en cuenta que la posición y no sea negativa porque entonces el elemento estará oculto por la parte de arriba.

De esta forma sabemos si el item se está visualizando.

Este código iría incorporado en el evento onCustomDraw o en el evento onAdvancedCustomDraw de la lista.

Un saludo y gracias a todos.


La franja horaria es GMT +2. Ahora son las 02:47:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi