cs_barbichette
Messages postés220Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention15 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
dimdidi
Messages postés26Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention18 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