Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-10-2007
abracadabra abracadabra is offline
Miembro
 
Registrado: jul 2005
Posts: 30
Poder: 0
abracadabra Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 05-11-2007
abracadabra abracadabra is offline
Miembro
 
Registrado: jul 2005
Posts: 30
Poder: 0
abracadabra Va por buen camino
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;
Responder Con Cita
  #3  
Antiguo 05-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 06-11-2007
abracadabra abracadabra is offline
Miembro
 
Registrado: jul 2005
Posts: 30
Poder: 0
abracadabra Va por buen camino
Cita:
Empezado por dec Ver Mensaje
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.
....
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.
Responder Con Cita
  #5  
Antiguo 08-11-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por abracadabra Ver Mensaje
....
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í

Muchas gracias (por cierto, con "arreglos" de refieres a vectores/matrices [arrays], ¿no?)
Responder Con Cita
  #6  
Antiguo 10-11-2007
abracadabra abracadabra is offline
Miembro
 
Registrado: jul 2005
Posts: 30
Poder: 0
abracadabra Va por buen camino
Cita:
Empezado por ixMike Ver Mensaje
De momento me sirve a mí

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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mover columnas de un DBGrid a otro YaninaGenia SQL 3 24-12-2005 16:12:25
listview, autoajustar tamaño columnas munheko OOP 4 19-05-2005 19:55:36
Mover columnas en un dbgrid jzginez Conexión con bases de datos 2 11-07-2004 15:47:25
ListView con tres columnas check Ricardo Alfredo Varios 1 15-10-2003 16:14:42
Alineamiento en columnas de ListView andre OOP 5 08-05-2003 15:03:37


La franja horaria es GMT +2. Ahora son las 19:18:10.


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
Copyright 1996-2007 Club Delphi