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

Signaler
Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
18 juillet 2006
-
Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
18 juillet 2006
-
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

2 réponses

Messages postés
243
Date d'inscription
lundi 30 octobre 2000
Statut
Membre
Dernière intervention
15 juillet 2013

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
Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
18 juillet 2006

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