Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Mover columnas de un ListView por codigo (https://www.clubdelphi.com/foros/showthread.php?t=49795)

abracadabra 30-10-2007 17:14:40

Mover columnas de un ListView por codigo
 
Hola amigos.
Quisiera saber si existe alguna forma de modificar el orden de las columnas de un listview.


Ejemplo
Sea un ListView que tiene columnas en el siguiente orden:
ColumnaA|ColumnaB|ColumnaC

Como puedo hacer para que el orden sea el siguiente:
ColumnaB|ColumnaC|ColumnaA


Gracias de antemano.

abracadabra 05-11-2007 20:35:28

Hola gente!!!!
Finalmente encontré la solución al problema.
Para mover columnas es necesario hacer una llamada al mensaje LVM_SETCOLUMNORDERARRAY, el codigo es el siguiente:

SendMessage(ListView1.Handle,LVM_SETCOLUMNORDERARRAY,numcols,lparam(@arregloCols));
ListView1.Invalidate

donde numcols representa el número de columnas que tiene el control listview.
arregloCols: Es un arreglo que contiene los índices de las columnas en el orden que se desea establecer.
Al final se hace un ListView1.Invalidate para que repinte el control ya que si no se hace esto se observa que lo único que cambia es el orden de las columnas en el header pero no de toda la lista.

Ejm:
Sea el ListView con las siguientes columnas
columna0|columna1|columna2|columna3|columna4|

Pero se quiere que el orden sea
columna4|columna2|columna0|columna1|columna3|

Entonces lo primera que hacemos es crear un arreglo con el orden que se quiere establecer es decir:
arregloCols = [4,2,0,1,3]
(Este arreglo se crea con las declaraciones e instruccioens utilizada para el manejo de arreglos)

finalmente se ejecutan las líneas de código especificadas lineas arriba:

SendMessage(ListView1.Handle,LVM_SETCOLUMNORDERARRAY,5,lparam(@arregloCols));
ListView1.Invalidate;

dec 05-11-2007 20:49:18

Hola,

Buen apunte abracadabra. En su momento y, tratando de echarte una mano, me puse a ello, y, bueno, a la vista está que no di pie con bola. Pero, bueno es saber lo que dices ahora. Muchas gracias por compartir la solución que encontraste. :)

abracadabra 06-11-2007 23:56:32

Cita:

Empezado por dec (Mensaje 243643)
Hola,

Buen apunte abracadabra. En su momento y, tratando de echarte una mano, me puse a ello, y, bueno, a la vista está que no di pie con bola. Pero, bueno es saber lo que dices ahora. Muchas gracias por compartir la solución que encontraste. :)

:o ....
No hay nada que agradecer dec, muchas veces el club me ha sacado de apuros ayudandome a resolver problemas. Solo espero que esta solución pueda servir a alguien en un futuro.
Saludos.

ixMike 08-11-2007 13:48:51

Cita:

Empezado por abracadabra (Mensaje 243998)
:o ....
No hay nada que agradecer dec, muchas veces el club me ha sacado de apuros ayudandome a resolver problemas. Solo espero que esta solución pueda servir a alguien en un futuro.
Saludos.


De momento me sirve a mí :D

Muchas gracias (por cierto, con "arreglos" de refieres a vectores/matrices [arrays], ¿no?)

abracadabra 10-11-2007 20:28:55

Cita:

Empezado por ixMike (Mensaje 244416)
De momento me sirve a mí :D

Muchas gracias (por cierto, con "arreglos" de refieres a vectores/matrices [arrays], ¿no?)

Asi es ixMike. :)
Cuando hablo de arreglos me refiero a estructuras arrays. En este caso en particular serán arreglos de enteros.

Ejm:
//Primero se declara el tipo
ArrayInt = array [1..5] of integer;
(es este caso la dimensión es de 5, por que el listview que dí en el ejemplo tiene 5 columnas)

//Luego declaras una variable (en este caso arregloCols) del tipo declarado.
arregloCols: ArrayInt;

Luego haces las operaciones y asignaciones necesarias para que el contenido de dicho arreglo (arregloCols) contengan los índices ordenados de tal manera que represente el orden de las columnas que deseas establecer. Así como se muestra en el ejemplo que dí hace días.

Saludos.


La franja horaria es GMT +2. Ahora son las 00:17:15.

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