| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
edwinhp2 Lt JG

Registrado: 19 Nov 2005Mensajes: 67
|
Publicado: Lun 16 Jul, 2007 10:06 pm Asunto: Color de una columna en un TListView |
|
|
Hola camaradas,
Alguien sabe como colocarle un fondo a una columna de un TListView, como lo hace el Explorer cuando ordenas por una columna.
Saludos !!!
Edwin |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 19 Jul, 2007 1:27 am Asunto: |
|
|
Si es para XP o Vista lo tienes fácil, solo tienes que añadir el RC famoso para que se apliquen los temas (o el componente TXPManifest en el BCB2006/07) y usar lo siguiente:
int numColumna = 1;
ListView1->Perform(LVM_FIRST + 140 /*LVM_SETSELECTEDCOLUMN*/, numColumna, 0);
y si quieres que funcione en versiones anteriores tendrás que encargarte del pintado de cada línea del ListView. |
|
| Volver arriba |
|
 |
edwinhp2 Lt JG

Registrado: 19 Nov 2005Mensajes: 67
|
Publicado: Jue 19 Jul, 2007 4:13 pm Asunto: |
|
|
Mil gracias _Leo era lo que buscaba y gracias Ángel porque mi siguiente pregunta era esa jejeje.
Saludos !!!
Edwin |
|
| Volver arriba |
|
 |
edwinhp2 Lt JG

Registrado: 19 Nov 2005Mensajes: 67
|
Publicado: Jue 19 Jul, 2007 4:48 pm Asunto: |
|
|
Que tal _Leo
Fíjate que cuando coloco el código que mencionaste, solamente me pone el fondo hasta la última fila, el resto es blanco, y puse el código en el evento ColumnClick para que se sombree la columna seleccionada, pero en ese momento no me sombrea la columna, pero si me cambio de aplicación ocultando el ListView y regreso a la aplicación, ya me lo pinta completo.
Lo único diferente que tengo en el código es que estoy utilizando un TListView con una modificación, es para el erase del background, pensando en poner una imagen de fondo en el listview.
Te anexo el código del componente:
[code]
class TBGListView : public TListView
{
protected:
virtual void __fastcall WndProc(TMessage& AMsg)
{
if (AMsg.Msg == WM_ERASEBKGND)
{
DefaultHandler(&AMsg);
}
else
TListView::WndProc(AMsg);
}
public:
__fastcall TBGListView(TComponent* AOwner) : TListView(AOwner) {}
};
[/code]
es todo lo diferente que tengo.
Hay algo que debería tomar en cuenta ???
Saludos !!!
Edwin |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 19 Jul, 2007 10:56 pm Asunto: |
|
|
Prueba así:
int numColumna = 1;
ListView1->Perform(LVM_FIRST + 140 /*LVM_SETSELECTEDCOLUMN*/, numColumna, 0);
ListView1->Invalidate(); |
|
| Volver arriba |
|
 |
edwinhp2 Lt JG

Registrado: 19 Nov 2005Mensajes: 67
|
Publicado: Vie 20 Jul, 2007 12:54 am Asunto: |
|
|
_Leo, _Leo, _Leo
ya funcionó !!!! tienes que dar los tips de donde leer para poder alcanzar un poco tu nivel !!!!
Mil gracias _Leo
Saludos !!!
Edwin |
|
| Volver arriba |
|
 |
|