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?