Mettre en couleur une ligne dans une combobox

Résolu
dimdidi Messages postés 26 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 18 juillet 2006 - 30 sept. 2005 à 09:48
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

2 réponses

cs_barbichette Messages postés 220 Date d'inscription lundi 30 octobre 2000 Statut Membre Dernière intervention 15 juillet 2013
1 oct. 2005 à 10:48
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
3
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
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
0
Rejoignez-nous