Surbrillance Listbox

Résolu
Messages postés
6
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
4 février 2007
-
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
-
Bonjour tout le monde !

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

Merci d'avance.

1 réponse

Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
4
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