Mettre en couleur une ligne dans une combobox [Résolu]

Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
18 juillet 2006
- - Dernière réponse : dimdidi
Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
18 juillet 2006
- 4 oct. 2005 à 09:18
Bonjour,

Je voudrais pouvoir mettre en couleur une ligne dans une combobox.

du genre ComboBox.Item[1].color=clBlack;

J'ai aussi regardé ComboBoxEx mais je n'ai pas trouvé;

Si quelqu'un à une idée ?
Merci d'avance...


Dimdidi
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
243
Date d'inscription
lundi 30 octobre 2000
Statut
Membre
Dernière intervention
15 juillet 2013
3
Merci
Ben,
voilà un exemple où le premier item est en jaune.
Il faut mettre ce code dans l'évenement OnDrawItem du Combobox
et définir le Style du combobox à csOwnerDrawFixed ou csOwnerDrawVariable.

if odSelected in State then
begin
combobox1.Canvas.Brush.color:=clHighlight;
combobox1.Canvas.pen.color:=clHighlightText;
end
else
if odComboBoxEdit in State then
begin
combobox1.Canvas.Brush.color:=clWindow;
combobox1.Canvas.pen.color:=clWindowText;
end
else
begin
combobox1.Canvas.Brush.color:=clWindow;
combobox1.Canvas.pen.color:=clWindowText;
if index=0 then combobox1.Canvas.Brush.color:=clyellow;
end;
combobox1.Canvas.fillrect(rect);
combobox1.canvas.TextOut(rect.Left+1,rect.Top+1,combobox1.Items[index]);

Maintenant,
si tu supprime le bloc du milieu (if odComboBoxEdit in State then...)
ton combobox cera en jaune quand le premier item sera selectionné, même dans la zone en haut, sinon, cette zone est toujours blanche (ou d'une autre couleur que tu peut justement choisir ici...)

Par contre, dans ces deux style de combobox, l'utilisateur ne peut pas entrer une valeur. Seules celles de Items peuvent être choisies

Barbichette

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 142 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_barbichette
Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
18 juillet 2006
0
Merci
Désolé pour la validation tardive mais je n'ai pas pu me connecter plus tot
Sinon cela fonctionne bien à un chouilla près

if odSelected in State then
begin
combobox1.Canvas.Brush.color:=clHighlight;
combobox1.Canvas.pen.color:=clHighlightText;
end
else
if odComboBoxEdit in State then
begin
combobox1.Canvas.pen.color:=clWindowText;
if index=0 then combobox1.Canvas.Brush.color:=clyellow
else combobox1.Canvas.Brush.color:=clWindow;
// Sinon quand on selectionne on ne garde pas la couleur
end
else
begin
combobox1.Canvas.pen.color:=clWindowText;
if index=0 then combobox1.Canvas.Brush.color:=clyellow
else combobox1.Canvas.Brush.color:=clWindow;
end;
combobox1.Canvas.fillrect(rect);
combobox1.canvas.TextOut(rect.Left+1,rect.Top+1,combobox1.Items[index]);

Merci Barbichette pour le code et les commentatires

Dimdidi
Commenter la réponse de dimdidi