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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-07-2007
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Question No logro cambiar el color de un Item lixbox

Buenas :
LLevo unos dias intentando cambiar el color de un item de un lixbos y no lo consigo.
He probado con la propiedad Canvas y na de na....
Si alguien lo ha logrado le agradeceria que me lo mostrara paso a paso

Gracias
Responder Con Cita
  #2  
Antiguo 12-07-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola,

¿has seguido lo que te comenté en éste hilo?
Quizá si pusieras el código que estás usando o más datos podríamos ver que está pasando.

Saludos
Responder Con Cita
  #3  
Antiguo 12-07-2007
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
La verdad es que he mirado el ejemplo que me has dado y ciertamente nose como adaptarlo a mi problema:

El caso es que tengo una ListBox con una serie de nombres, esta lista la recorro para selecionar uno de los nombres.
Una vez seleccionado el nombre quiero que se me muestre en el Lixtbox pero como "DESACTIVADO" (cambiando el color del texto ..gris claro)

Creo que con ListBox.Canvas.Font.Color=clGreen podria hacerlo (no me funciona) Ademas como indico cual es el item que quiero modificar...

Espero Haberme Explicado Bien Gracias
Responder Con Cita
  #4  
Antiguo 12-07-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Smile

Cita:
Creo que con ListBox.Canvas.Font.Color=clGreen podria hacerlo (no me funciona) Ademas como indico cual es el item que quiero modificar...
Creo que probablemente no has entendido bien el punto, a juzgar por el comentario. Esto lo tienes que programar en el evento OnCustomDrawItem. Yo lo he probado para controles ListView pero es lo mismo...

Código Delphi [-]
if (Item->SubItems[0][3]=="Hola"){
Sender->Canvas->Brush->Color=static_cast(RGB(32,44,55));  }

En el ejemplo Item hace referencia al objeto de tipo TListItem que se está dibujando, si el tercer subitem es igual a "Hola", le cambia el color...
Responder Con Cita
  #5  
Antiguo 13-07-2007
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
En primer lugar gracias Bicho por atender mi peticion

He seguido tus recomendaciones y me han surgido una seride de problemas

El Evento OnCustomDrawItem en Builder no Existe Pero Existe el Evento
DrawItem que supongo que es el mismo, he trabajado en este.

Mi primera duda es que los cambios deben de realizarse en tiempo de ejecucion, he comprobado que cada vez que selecciono un item del ListBox no se produce el Evento DrawItem con lo cual nuca se ejecuta el codigo que me has descrito.

Acontinuacion te explico un poco lo que quiero y como lo hago:

La idea es que al selecionar un item de un ListBox este se "Inhabilita" una de las consecuencias es que cambie de color..

Para ello he creado un vector booleano con numero de elmentos igual al de items asi cada vez que se selecciona un Item pongo la posicion que se corresponde en el vector a false. (Hata aqui todo bien)

En el Evento DrawItem he puesto la siguiente condicion:

if (VectorSeleccionados[Listbox1->ItemIndex] = false)
{
Listbox1->Canvas->Brush->Color = static_cast(....);
}

Al compilar pone error : Style of funtion definition is now obsolete

He probado con:

Listbox1->Canvas->Font->color = clGreen ;

no me da error.

Se te ocurre algo Gracias.
Responder Con Cita
  #6  
Antiguo 13-07-2007
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Yo otra vez:

He puesto la propiedad Style en OwerDrawFixed y se ha producido un cambio
Ahora si realiza el Evento DrawItem (se realiza cuando se activa el TLIstBox para cada item y tambien cada vez que realizo la seleccion de un item en particular ) pero sigo teniendo un problema
los items se muestran en el ListBox no se ven (son transparentes), estan
hay pero no se ven.


Gracias
Responder Con Cita
  #7  
Antiguo 13-07-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por NEG1414
los items se muestran en el ListBox no se ven (son transparentes), estan
hay pero no se ven.
Cuando se usa un método de dibujo personalizado, como OwerDrawFixed, uno tiene que hacer todo, incluyendo el dibujado del texto y el fondo. En el ejemplo de Bicho, es justamente lo que se hace:

Código Delphi [-]
Canvas.FillRect(Rect); // <--- fondo
Canvas.TextOut(Rect.Left,Rect.Top,Items[Index]); // <--- texto

// Saludos
Responder Con Cita
  #8  
Antiguo 16-07-2007
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Por fin... Gracias Bicho

El resultado final adaptado a C++ Builder ha sido

if (VectorSeleccionados[Index]== false)

{
ListBox->Canvas->FillRect(Rect);
ListBox->Canvas->Font->Color=clGray;
ListBox->Canvas->TextOut->(Rect.Left,Rect.Top,ListBox->Items->
Strings[Index])

}

Todo Esto En el Evento DrawItem y con la propiedad Style en OwerDrawFixed

Gracias
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
Cambiar color a DBGrid Esau OOP 7 28-01-2011 22:26:41
Cambiar el color progressbar Matrixnb2 Internet 5 18-05-2007 18:42:06
Cambiar de color un boton zvf OOP 1 24-04-2006 22:50:26
cambiar color foco Rabata Varios 1 09-09-2004 15:48:35
Cambiar el color a los botones ramonibk OOP 3 28-07-2004 07:14:02


La franja horaria es GMT +2. Ahora son las 21:46:02.


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