FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Comportamiento extraño al colorear un ListView
Hola a todos!
Tengo un ListView en el cual, dependiendo de una condición, las filas se pinta de un color u otro, y todo OK en tiempo de ejecución. Pero cuando termina de sacarme las filas y desplazo el scroll vertical para mirar las filas que quedan arriba o abajo de la pantalla de visualización del ListView, el color pintado se me desaparece, es decir, se me queda el color por defecto designado, que es el color de las letras en negro y el fondo en blanco. Me ocurre lo mismo cuando pincho sobre una de las lineas o cuando minimizo la aplicación y la vuelvo a restaurar (me desaparece los colores de las filas, y me dejan las por defecto). No sé que puede ser...? Gracias de antemano. |
#2
|
|||
|
|||
Hola...
Puedes explicar exactamente como haces ese coloreado de las filas? Que código usas y desde donde usas ese código (evento, método redefinido, etc...) Saludos... |
#3
|
|||
|
|||
>Puedes explicar exactamente como haces ese coloreado de las filas?
>Que código usas y desde donde usas ese código (evento, método redefinido, etc...) Hola, estoy programando en builder6, tengo un ListView en un Form1 y en el Unit.h asociado llamo al evento ListViewCustomDrawItem del siguiente modo: Código:
void __fastcall TForm1::ListViewCustomDrawItem(TCustomListView *Sender, TListItem *Item, TCustomDrawState State, bool &DefaultDraw) { Sender->Canvas->Font->Color = clRed; if (snf2->Proto() == "TCP") { Sender->Canvas->Font->Color = clGreen; } if (snf2->Proto() == "UDP") { Sender->Canvas->Font->Color = clBlue; } if (snf2->Proto() == "ARP") { Sender->Canvas->Font->Color = clPurple; } } Lo que sucede lo he mencionado antes, que en tiempo de ejecución funciona bien, pero al terminar de sacarme las filas y muevo el scroll vertical o pincho sobre alguna fina o minimizo la aplicaciones todas las filas me aparece el color por defecto, que en este caso es rojo. Alguien sabe por qué? |
#4
|
|||
|
|||
Hola...
Vaya, no había leido bien el mensaje xDDDD snf2 es un objeto único? O existe uno por cada Item en el ListView? Saludos... |
#5
|
||||
|
||||
Cita:
Código:
void __fastcall TForm1::ListViewCustomDrawItem(TCustomListView *Sender, TListItem *Item, TCustomDrawState State, bool &DefaultDraw) { Sender->Canvas->Font->Color = clRed; if (snf2->Proto() == "TCP") { Sender->Canvas->Font->Color = clGreen; } if (snf2->Proto() == "UDP") { Sender->Canvas->Font->Color = clBlue; } if (snf2->Proto() == "ARP") { Sender->Canvas->Font->Color = clPurple; } DefaultDraw = false; } |
#6
|
|||
|
|||
Buenas tardes!
Cita:
Cita:
Gracias. |
#7
|
|||
|
|||
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):
Ya con esto cada que hagas un scroll se deben dibujar bien los items en la lista... Saludos... |
#8
|
|||
|
|||
Buenas,
Cita:
Como el ListView lo tengo en Form1 en Unit1 pues traslado el valor que me interesa con snf->Proto() donde snf es un objeto de la clase Snifer, así paso el valor que me interesa (en este caso el protocolo) del Unit3 al Unit1 para usarlo dentro del método de ListViewCustomDrawItem como lo he indicado anteriormente. Según el código: Código:
// 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); ListViewCustomDrawItem. No lo tengo muy claro. Gracias |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Extraño comportamiento de delphi 7 | smessina | Varios | 5 | 18-03-2008 12:50:54 |
Extraño comportamiento de Firebird 2.0 | TrUnkS | Firebird e Interbase | 4 | 06-01-2007 23:05:57 |
Comportamiento extraño de DisplayFormat | Thales | Conexión con bases de datos | 0 | 02-12-2005 21:56:32 |
Comportamiento extraño de Delphi | walrus | Varios | 3 | 05-08-2004 10:04:32 |
Comportamiento extraño con InnoBD | brandolin | MySQL | 0 | 20-10-2003 14:34:09 |
|