PDA

Ver la Versión Completa : Cambiar color de seleccion en un combo


Perio
17-01-2006, 15:32:55
Hola como estan,

Necesito cambiar el color de seleccion de un combo, en realidad es un TJvDBLookupCombo, estube buscando dentro del foro y solo encontre formas de cambiar colores en grillas y listas pero no de combos.

Saludos

Perio

roman
17-01-2006, 17:20:19
Dicho un poco de memoria:

Debes poner la propiedad OwnerDraw del ComboBox en true y programar su evento OnDrawItem. Este evento te pasa el parámetro Selected que te indica si el item que se está dibujando es o no el seleccionado. Sabiendo esto, usas el método FillRect del canvas para pintar del color deseado, y luego alguno de los métodos de texto del canva para escribir el texto. Si buscas algo como "color+listbox" seguro encontrarás aquí mismo ejemplos de como dibujar los ítems de un listbox, que viene a ser igual que para un combo.

// Saludos

Perio
19-01-2006, 15:27:34
Roman:

Hola, te agradesco mucho por tu respuesta, pero sigo teniendo inconvenientes ya que en los combos no encuentro la propiedad OwnerDraw para ponerla en true, ni en el inspector de objetos ni por codigo.
Desde ya muchas gracias.

Saludos desde Argentina

Perio

roman
19-01-2006, 17:14:55
en los combos no encuentro la propiedad OwnerDraw

Ni la encontrarás :p

Anteriormente me equivoqué :o (lo decía de memoria). Es la propiedad Style, que tienes que poner en csOwnerDrawFixed.

Disculpa la confusión.

// Saludos

Perio
19-01-2006, 17:33:23
Roman:

Te agradesco tu pronta respuesta, tenias razon acerca de la propiedad style, el problema es que no es un combo convencional, se trata de un TJvDBLookupSource y éste no tiene la la propiedad Style.

Es mu raro que no la tenga ya que generalmente estos componentes son extenciones de los estandares que brinda delphi.

Voy a ver como me las arreglo.

Gracias de nuevo y saludos.

roman
19-01-2006, 17:41:49
La propiedad Style aparece en TCustomComboBox como propiedad protegida así que es posible que el TJvDBLookupSource descienda directamente de TCustomComboBox en lugar de TComboBox y no publique la propiedad.

Puedes crear un descendiente de TJvDBLookupSource cuya única labor en la vida sea publicar la propiedad:


type
TMIJvDBLookupSource = class(TJvDBLookupSource )
published
property Style;
end;


o bien usar algún truco sucio como:


type THackJvDBLookupSource = class(TJvDBLookupSource );

...

THackJvDBLookupSource(JvDBLookupSource1).Style := csOwnerDrawFixed;


// Saludos

vtdeleon
19-01-2006, 18:01:39
Saludos

Y de cual biblioteca es TJvDBLookupSource , la estoy buscando en JEDI y no la veo :confused: