Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-01-2018
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Listbox con ultima linea añadida con diferente color

Hola amigos, estoy con una aplicacion la cual tiene un ListBox para mostrar una especie de log el cual si hay un error lo mostraria en rojo, si hay alguna alerta en naranja y si fue bien en verde. La idea es que vayan apareciendo lineas y cada una de su color pertinente y hasta ahora tengo esto:
Donde controlo el dibujado del listbox:
Código PHP:
void __fastcall TForm1::ListBoxLogDrawItem(TWinControl *Controlint Index,
      
TRect &RectTOwnerDrawState State)
{
    
// eliminate artifacts
    
ListBoxLog->Canvas->FillRect(Rect);

    
// Compruebo si es la ultima linea
    
if (Index == ListBoxLog->Items->Count 1) {
        
// Color del texto que deseo para la ultima linea
        
ListBoxLog->Canvas->Font->Color colorListBoxLog;
    }else{
    }
    
// dibujo el texto
    
ListBoxLog->Canvas->TextOut(Rect.Left 1Rect.Top,ListBoxLog->Items->Strings[Index]);

Uno de los que insertan una linea en el ListBox:
Código PHP:
void __fastcall TForm1::ButtonUpdateFirstLayerClick(TObject *Sender)
{
    
//Aqui ya habria que desencriptarlo
    
if(Actualizar()==-1){
        
colorListBoxLog clRed;
        
ListBoxLog->Items->Add("Hubo un error al actualizar.");
    }else{
        
colorListBoxLog clRed;
        
ListBoxLog->Items->Add("Se ha actualizado correctamente.");
        
ListBoxLog->TopIndex ListBoxLog->Items->Count 1;
    }

El problema que tengo es que me colorea bien el primero pero si inserto otra linea esa me la colorea bien pero el resto de lineas no me respeta el color que tenia y todas me las pone de negro. ¿como seria para que me respete el color de las que ya estaban?
Responder Con Cita
  #2  
Antiguo 09-01-2018
Avatar de _Leo
_Leo _Leo is offline
Miembro
 
Registrado: ene 2017
Ubicación: Lanzarote (Islas Canarias)
Posts: 38
Poder: 0
_Leo Va camino a la fama
Hola, aprovechando que se puede asociar un puntero TObject* a cada elemento, podrías hacer una chapucilla así para que cada elemento mantenga asociado su color:
Código PHP:
void __fastcall TForm1::ListBoxLogDrawItem(TWinControl *Controlint Index,
      
TRect &RectTOwnerDrawState State)
{
    
ListBoxLog->Canvas->FillRect(Rect);
    
ListBoxLog->Canvas->Font->Color = (TColor)ListBoxLog->Items->Objects[Index];
    
ListBoxLog->Canvas->TextOut(Rect.Left 1Rect.TopListBoxLog->Items->Strings[Index]);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonUpdateFirstLayerClick(TObject *Sender)
{
    
// Al añadir un elemento especificamos el color:
    
ListBoxLog->Items->AddObject("Rojo",    (TObject*) clRed);
    
ListBoxLog->Items->AddObject("Naranja", (TObject*) RGB(255,165,0));
    
ListBoxLog->Items->AddObject("Verde",   (TObject*) clGreen);

Responder Con Cita
  #3  
Antiguo 10-01-2018
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Muy interesante Actualmente me quedé sin pc pero en cuanto lo tenga funcionando lo probaré y te diré que tal va. Muchas gracias.
Responder Con Cita
  #4  
Antiguo 10-01-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Una buena alternativa al uso de un TListBox es un TListView, aunque SEGURO que el código de Leo funciona a la perfección.
Responder Con Cita
  #5  
Antiguo 10-01-2018
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Cita:
Empezado por Angel.Matilla Ver Mensaje
Una buena alternativa al uso de un TListBox es un TListView, aunque SEGURO que el código de Leo funciona a la perfección.
¿Que ventajas hay al usar un TListView? O sea me refiero a que qué me aporta el TListView que el TListBox no haga.
Responder Con Cita
  #6  
Antiguo 16-01-2018
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Gracias _Leo, fue perfecto.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
ListBox con diferente color de fuente Jose Roman OOP 2 23-08-2013 00:19:40
Ultima Linea del DbGrid Er0s Conexión con bases de datos 45 21-09-2010 22:19:30
ListBox COLOR seleccion diferente Deiv Varios 1 09-01-2006 18:10:59
QRShape en la ultima línea!!! CarmaZone Impresión 4 19-07-2005 18:09:50
ListBox diferente... Elfoscuro Varios 4 26-03-2005 10:38:14


La franja horaria es GMT +2. Ahora son las 18:27:59.


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