Ver Mensaje Individual
  #3  
Antiguo 04-03-2008
Ziara Ziara is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Reputación: 0
Ziara Va por buen camino
Hola de nuevo, gracias por la contestación. Lo he estado probando en builder

Código:
void __fastcall TForm1::ListViewCustomDrawItem(TCustomListView *Sender,
      TListItem *Item, TCustomDrawState State, bool &DefaultDraw)
{
 this->ListView->Canvas->Brush->Color = clRed;
}
y con lo anterior me colorea las filas, todas, en rojo.

el ejemplo:
Código:
procedure TForm1.ListView1CustomDrawItem(
  Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Item.SubItems[1] = 'mexico' then
    Sender.Canvas.Brush.Color := RGB($66,$99, $66)
  else if Item.SubItems[1] = 'españa' then
    Sender.Canvas.Brush.Color := RGB($ff,$cc, $33)
  else if Item.SubItems[1] = 'brasil' then
    Sender.Canvas.Brush.Color := RGB($00,$66, $ff);

  // Dejar que pinte el texto normalmente
  DefaultDraw := true;
end;
tienen los items estáticos, yo tengo como un bucle for y una variable AnsiString llamado cadena que, dependiendo del valor que tenga, AB, BB, CB ... coloree la linea de un color u otro.

Comento esto porque creo que el el evento OnCustomDrawItem del ListView, corregirme si me equivoco, sólo se puede llamar desde donde está creado el ListView, si es en el Form1, se llama desde el Form1. Pero el bucle for que he comentado antes, está en un método de una clase que está en otro unit distinto al que contiene el Form1, por tanto no se puede usar??

Qué otras opciones tengo para colorear las filas de un ListView que sea dentro del for ya que la variable cadena va machacando su valor en cada iteración?
Responder Con Cita