Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Color Columnas TListView

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Color Columnas TListView Responder citando

Hola,

Espero que alguien pueda sacarme de la duda.

¿ Es posible cambiar el color de una columna del Objeto TListView?

Si la respuesta es afirmativa, podrían indicarme de que manera se hace.

De antemano, Gracias
Volver arriba
Mensaje    Asunto: Responder citando

Hola!

Por favor, antes de publicar un mensaje deberíais utilizar la opción Buscar del foro. La respuesta a tu pregunta la dio _Leo hace unos meses en el siguiente mensaje:

https://cppbuilder.es/viewtopic.php?t=4770


Nos vemos gente! cuidarse mucho!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Perdón, no leí bien el mensaje. Me parecio ver que querías poder ordenar las filas y no vi que lo que querías era cambiar el color de las columnas. Prueba a investigar por aqui:

Código:

void __fastcall TForm1::ListView1CustomDrawSubItem(TCustomListView *Sender,
      TListItem *Item, int SubItem, TCustomDrawState State,
      bool &DefaultDraw)
{

  if (SubItem==1)  <--Pinta la segunda columna de rojo
      Sender->Canvas->Brush->Color = clRed;
  if (SubItem==2) <--Pinta la tercera columna de verde
      Sender->Canvas->Brush->Color = clLime;
  if (SubItem==3) <--Pinta la cuarta columna de amarillo
      Sender->Canvas->Brush->Color = clYellow;


Suerte!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias Marky,

Es exactamente lo que necesitaba.

P.D. Normalmente utilizo la opción "Buscar" para saber si ya existen mensajes pero no tuve suerte.
Volver arriba
Mensaje    Asunto: Responder citando

Con este codigo me pasa lo siguiente:

Si quiero solo colorear la primera columna de los SubItems:
Código:

void __fastcall TForm1::ListView1CustomDrawSubItem(TCustomListView *Sender,
      TListItem *Item, int SubItem, TCustomDrawState State,
      bool &DefaultDraw)
{
    if (SubItem==1)  //<--Pinta la segunda columna de rojo
    {
        Sender->Canvas->Brush->Color = clRed;
    }
}

Pero,... Colorea de la columna selecionada en adelante.

Entonces se me ocurre:
Código:

void __fastcall TForm1::ListView1CustomDrawSubItem(TCustomListView *Sender,
      TListItem *Item, int SubItem, TCustomDrawState State,
      bool &DefaultDraw)
{
    if (SubItem==1)  //<--Pinta la segunda columna de rojo
    {
        Sender->Canvas->Brush->Color = clRed;
    }
    else
    {
        //clWindow color de la propiedad ListView1
        Sender->Canvas->Brush->Color = clWindow;
    }
}

Es decir que ponga el color por defecto de la propiedad ListView1->Color. Sin embargo, esta linea no surge efecto Shocked ??? y lo pone todo, en este caso de color clRed.
Probando, me doy cuenta de que si pongo el mismo color que el de la propiedad ListView1->Color pues no hace efecto, sin embargo si pruebo con otro color si lo hace bien.
Por ejemplo, si ListView1->Color es igual a clWindow
Código:

    if (SubItem==1)  //<--Pinta la segunda columna de rojo
    {
      Sender->Canvas->Brush->Color = clRed;
    }
    if (SubItem==2)
    {
        Sender->Canvas->Brush->Color=clWindow;
    }

Del SubItem 1 en adelante todo de color clRed.
Ahora bien, igual que antes: ListView1->Color igual a clWindows.
Código:

    if (SubItem==1)  //<--Pinta la segunda columna de rojo
    {
      Sender->Canvas->Brush->Color = clRed;
    }
    if (SubItem==2)
    {
        Sender->Canvas->Brush->Color=clWhite;
    }

Pues del SubItem 2 en adelante todo de color clWhite.

Ahhh, tambien pasa con otras propiedades (por ejemplo, color texto):
Sender->Canvas->Font->Color

Mas cosas curiosas: Si añado otra propiedad, tambien del canvas, parece que se arregla:
Código:

    if (SubItem==1)  //<--Pinta la segunda columna de rojo
    {
      Sender->Canvas->Brush->Color = clRed;
    }
    if (SubItem==2)
    {
        Sender->Canvas->Brush->Color=clWhite;
        Sender->Canvas->Font->Size=11; // <--- AÑADIMOS
    }


Resumiendo como coloreo SOLO la primera columna de los subitems. ????, es decir como soluciono estas interferencias Shocked .

Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.