Ver Mensaje Individual
  #7  
Antiguo 01-07-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Reputación: 24
maeyanes Va por buen camino
Hola...

Me imagino que lo que estás haciendo es como un registro de actividad de lo que recibe el objeto, no es así?

Entonces, lo que sucede es que el componente al redibujar siempre va a leer el último valor que tiene el objeto, es por eso que cuando haces un scroll ya no se ven como cuando se insertaron la primera vez...

Para esto podrías usar la propiedad Data del TListItem (el ejemplo te lo pongo en Delphi, pero deberías poder traducirlo a C sin problemas):

Código Delphi [-]
// Agregas un TListItem nuevo:
with ListView1.Items.Add do
  if snf2.Proto = 'TCP' then
    Data := Pointer(0)
  else
    if snf.Proto = 'UDP'
      Data := Pointer(1)
    else
      Data := Pointer(2);

// Ahora en el evento OnCustomDrawItem:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem;
  State: TCustomDrawState; DefaultDraw: Boolean);
begin
  case Integer(Item.Data) of
    0:
      Sender.Canvas.Font.Color := clGreen;
    1:
      Sender.Canvas.Font.Color := clBlue;
    2:
      Sender.Canvas.Font.Color := clPurple
  else
    Sender.Canvas.Font.Color := clRed
  end
end;

Ya con esto cada que hagas un scroll se deben dibujar bien los items en la lista...


Saludos...
Responder Con Cita