Surbrillance Listbox

Résolu
SpringOne Messages postés 6 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 4 février 2007 - 26 juin 2006 à 21:55
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 - 27 juin 2006 à 13:25
Bonjour tout le monde !

J'aimerai savoir comment changer la couleur de la surbrillance d'un listbox,

Merci d'avance.

1 réponse

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
27 juin 2006 à 13:25
Salut,

Pour ce faire, tu donnes à ton listbox le style :  lbOwnerDrawFixed (hauteur de ligne fixe)  ou lbOwnerDrawVariable.
Tu assignes un événement OnDrawItem dans lequel tu peux dessiner sur le Canvas du ListBox.
Attention : il faut redessiner aussi le texte des Items.

Exemple de code :

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
   with ListBox1 do
   begin
       Canvas.Font.Assign(Font);
        if odSelected in State then   // si l'item est sélectionné
        begin
           Canvas.Brush.Color:= clAqua; // ta couleur de surbrillance
           Canvas.Font.Color:= clwhite;   // la couleur du texte
        end
       else
           Canvas.Brush.Color:= Color;
       Canvas.FillRect(Rect);
       Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Items[Index]);
   end;
end;

Le Left + 2 et le Top + 1 : ce n'est qu'un exemple, à toi de choisir les valeurs. Tu peux aussi centrer le texte verticalement en t'aidant de TextHeight...

A +
Thierry
1
Rejoignez-nous