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 04-07-2004
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Cambiar colore a las lineas de un TListBox

Hola a todos!!!

Mi problema es el siguiente.... tengo una lista con las tareas que quiero que mi aplicacion realice. Yo necesito que una vez que una sea terminada se le pueda cambiar el color en la lista, o sea, que cuando una tarea sea completada cambie el color del FONT de la linea con el nombre de la tarea de rojo a negro, por ejemplo.

Gracias....
Responder Con Cita
  #2  
Antiguo 04-07-2004
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
No hay forma directa de manipular la fuente de cada ítem por separado de manera que debes dibujarlos tú mismo poniendo la propiedad Style del ListBox en lbOwnerDrawFixed y dibujando el texto en el evento OnDrawItem:

Código Delphi [-]
procedure TForm1.ListBox1DrawItem(
  Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with ListBox1.Canvas do
  begin
    FillRect(Rect);
    if Terminada(Index) and not (odSelected in State) then
      Font.Color := clGreen;
    TextOut(Rect.Left + 2, Rect.Top, ListBox1.Items[Index])
  end;
end;

Aquí Terminada vendría siendo una función que determine si la tarea está acabada. En tal caso, y suponiendo que el ítem no está seleccionado en esos momentos, le cambias el color. La última condición no es necesaria pero resulta un poco difícil leer un color que no sea blanco sobre el fondo azul de la selección.

Si quieres hacer algo más osado leete el ejemplo que viene en la ayuda de Delphi sobre el evento OnDrawItem para que veas que puedes incluso colocar bitmaps al lado del texto con lo cual obtendrías algo mucho mejor para indicar el estátus de la tarea.

// Saludos
Responder Con Cita
  #3  
Antiguo 04-07-2004
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
NO me funciona

Parece que hay algo que no trabaja aqui.. me da una excepcion cuando trato de annadir una nueva entrada al ListBox.
Parece que hay algo que no funciona. Puede alguien explicarme como hacer para por ejemplo, pintar una linea cualqueira de un color diferente en un TLISTBOX? Yo le paso el numero de lal inea y que me lo pinte de rojo.. por ejemplo.

GRACIAS NUEVAMENTE
Responder Con Cita
  #4  
Antiguo 04-07-2004
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 bustio
Puede alguien explicarme como hacer para por ejemplo, pintar una linea cualqueira de un color diferente en un TLISTBOX? Yo le paso el numero de lal inea y que me lo pinte de rojo.. por ejemplo.
Parece que no entendiste muy bien: no hay manera de cambiar los atributos de fuente de elementos en particular. Si quieres que los elementos aparezcan con colores diversos debes establecer el estilo lbOwnerDrawFixed para dibujarlos tú mismo.

Si el código te presenta algún problema entonces escribe aquí cuál es exactamente el código que estás usando y cuál es exactamente la excepción que ocurre y en qué linea del código.

Yo probé el código que te puse antes de mi mensaje anterior y funcionó correctamente. Lo volví a probar ahora haciendo inserciones de elementos y no presentó problemas. También probé borrando elementos y nada, ninguna excepción.

Claro está que puede haber alguna situación que no esté previendo pero sin ver el código que usas no hay manera de saberlo.

// 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


La franja horaria es GMT +2. Ahora son las 07:11:21.


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