Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   modificación de TFlatComboBox (https://www.clubdelphi.com/foros/showthread.php?t=2823)

Er_Manué 08-08-2003 13:12:23

modificación de TFlatComboBox
 
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

Cita:

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 ;)


La franja horaria es GMT +2. Ahora son las 07:20:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi