FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Pintar fila de Listview
Hola,en un boton tengo el siguiente código :
mi duda es como puedo pintar la fila encontrada. Gracias. |
#2
|
||||
|
||||
Voy a asumir bastantes cosas ya que no das muchos detalles
El codigo que te propongo funciona para el ListView de la Vcl. No he cambiado ninguna propiedad de las que vienen por defecto al soltar el componente TListView en el form. Todas las cambio en el evento FormCreate del Form para que quede bien claro Para que te funcione el codigo necesitas un TListView llamado ListView1 y un TEdit llamado Edit1. El Edit le indica al ListView que debe "repintarse" cuando se presiona ENTER, obviamente con el foco sobre el Edit. De eso se encarga el evento OnKeyDown del TEdit Cuando el ListView recibe la orden de pintarse, el evento CustomDrawItem se dispara y te permite realizar "ajustes" sobre el item que actualmente se esta pintando. Podes consultar las propiedades del Item que recibio el evento en los argumentos del evento (el parametro Item). Tambien tenes un parametro State que indica en que "fase" del pintado esta el TListView actualmente. Esto lo explica mejor la documentacion que yo Es un evento un poco "raro" porque en este el parametro Sender no es TObject como siempre, es un TCustomListView, que nos viene muy bien porque necesitamos el Canvas para poder realizar el pintado personalizado Hay muchos mas eventos de pintado. Algunos requieren que actives la propiedad OwnerDraw del TListView para que se disparen. Esto implica que uno mismo debe hacerse cargo del pintado completo del Listview, en todos sus posibles estados. Es un trabajo algo pesado pero tenes flexibilidad absoluta Sin mas, el codigo
|
#3
|
|||
|
|||
Hola,gracias tu ejemplo me ayudado pinta la fila ingresado texto en Edit1 pero cuando ingreso otro texto la fila que estaba pintada pierde el color.lo que necesito es a medida que voy ingresando (va comparando con la fila con la caja de texto) quede pintada la filas encontradas.como podria hacer esa parte.gracias.
imagen gif: gifyu.com/images/GIF78a8c.gif
|
#4
|
||||
|
||||
Tendrias que ir almacenando en alguna otra estructura las filas que fuiste encontrando. En el evento del pintado deberias pintar todas las filas que esten dentro de esa estructura
En pseudocodigo:
Como estructura adicional podrias usar una lista, un diccionario, un arbol binario.. el que mas comodo te resulte. La idea es la misma, en esa estructura adicional tenes que poder asociar un elemento del TListView (por ejemplo, el Indice) con el texto que vas ingresando en el Edit |
#5
|
|||
|
|||
gracias,implementaré como lo mencionas.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Pintar filas de un Listview | Coco_jac | Varios | 4 | 14-07-2006 15:46:18 |
Como pintar la fila de un DBGrid | Gustavo Gowdak | OOP | 2 | 04-05-2006 21:34:04 |
Pintar toda una fila de un DBGrid | Luciano M. | Varios | 4 | 02-05-2006 22:30:24 |
Pintar Fila del DBGrid | Palmiro | Conexión con bases de datos | 2 | 05-04-2006 23:25:51 |
Pintar Fila por medio en ub DBGrid | josem | OOP | 3 | 01-01-2005 20:54:52 |
|