PDA

Ver la Versión Completa : modificación de TFlatComboBox


Er_Manué
08-08-2003, 13:12:23
Hola de nuevo!

Tengo un "pequeño" problemilla con un componente que he modificado :D el componente es cuestion es el TFlatComboBox, me he creado un nuevo componente llamado miTFlatComboBox (Original el nombre :p ) que no es más que una modificación para permitir mostrar 2 columnas separadas por una línea, y realizar búsquedas por cada uno de los campos, y cosillas de ese tipo.

El componente esta en modo style=csOwnerDrawFixed, el problema es que quiero cambiar el color del elemento seleccionado y dejar el resto en su color normal.

Se que debo hacerlo en el evento onPaint() pero no se como hacerlo para que solo cambie el color del item sobre el que se encuentra el rectángulo de selección.

musas asias :)

andres1569
08-08-2003, 14:33:55
Hola:

No conozco la implementación de ese componente TFlatComboBox, pero si hereda de un TComboBox, quizás deberías redefinir el método DrawItem y ahí te da información, en el parámetro State sobre si el Item es el que hay seleccionado (HighLight) o no.

Otra cosa, ya que estás creando un componente propio, heredado de otro, es recomendable usar los métodos virtuales (o dynamic) que tiene la clase ancestra, en vez de interceptar los eventos del tipo OnPaint, OnDrawItem, ... puesto que éstos están pensados para ser escritos por el programador final, y así evitas la posibilidad de que se pueda machacar el código que has previsto para tu componente. Muchos de estos eventos del tipo OnXXX se lanzan desde un método con el mismo nombre pero sin el On.

__cadetill
08-08-2003, 21:53:36
Posteado originalmente por Er_Manué
el problema es que quiero cambiar el color del elemento seleccionado y dejar el resto en su color normal.


No entiendo que quieres decir con esto, pero a lo mejor te sirve la demo que hay en mi web sobre el ComboBox en el cual muestro como pintar una columna de un color y una fila especifica de otro,.....

Er_Manué
11-08-2003, 10:19:41
Ya esta solucionado :D el problema era que utilizaba Index para ver el elemento seleccionado en vez de state :p

Lo de pintar lo controlaba en el evento DrawItem en vez de onPaint(), en que estaría pensando yo ;)

muxas asias ;)