PDA

Ver la Versión Completa : Posición Columna en ListView


Igna
29-10-2004, 16:44:35
Hola.

¿Alguien sabe como leer la posición de una columna en un ListView?.

En teoría con la propiedad index del TListColumn me valdría, pero si yo cambio la posición de la columna "clave" (aquella que contiene los items, no los subitems), cuando accedo a su propiedad index me sigue saliendo =0, y, obviamente, las posición de las demás columnas ya no se corresponden con su propiedad index.

Lo que quiero saber es si hay algún medio de conocer la posición de la columna en el ListView con visualización vsReport aunque cambie la columna de posición.

Espero haberme explicado más o menos bien.

Un saludo, y gracias.

Ricardosml
31-10-2004, 02:09:18
Hola
Yo no usé en mucho este control, por lo que no conozco todas sus propiedades y métodos, pero lo que se me ocurre que puedes hacer un ciclo sumando en ancho de las columnas anteriores:

function TForm1.DarPosicion(n:integer):integer;
var
sum,i:integer;
begin
sum:=0;
i:=1;
while (i<=n) and (i<ListView1.Columns.Count) do
begin
sum:=sum+ListView1.Column[i-1].Width;
i:=i+1;
end;
result:=sum;
end;

Donde n es la posicion que quieres averiguar;
Espero que esta solución se sirva.

Igna
02-11-2004, 13:40:14
Gracias por responder Ricardosml, pero no es eso lo que necesito.

Yo no quiero saber la posición en la pantalla, lo que quiero saber es el número de columna que es. Es decir, si al principio tengo tres columnas más o menos así:

columna1 | columna2 | columna3

e intercambio la posición de columna1 y columna2 tal que así:

columna2 | columna1 | columna2

quiero que al seleccionar la columna1 (en el evento OnColumnClick), pueda leer el caption de esa columna. El problema es que para el ListView, el index de la columna1 sigue siendo el 0, por lo que si utilizo Column.Caption o Columns[column.index], me aparece el caption de la columna que en ese momento está en la primera posición (en este caso columna2). Utilizo el caption para ordenar el ListView dependiendo del campo seleccionado, por eso necesito leerlo.

De todas formas, gracias por responder.