cs_f6dqm1
Messages postés62Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention25 mai 2013
-
26 janv. 2007 à 14:39
cs_f6dqm1
Messages postés62Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention25 mai 2013
-
27 janv. 2007 à 08:21
Bjr à tous
J'essaie de résoudre un petit problème : dans une listbox à choix multiple avec mise en surbrillance des lignes choisies, pouvoir changer la couleur de la fonte d'une ligne quelconque.
J'ai trouvé sur le site la façon de changer la couleur d'une ligne en passant par l'évènement DrawItem, par contre lorsque je fais ça, je perds la fonction MultiSelect même si elle est à True et la surbrillance en bleu ne fonctionne plus. Y a t'il une solution ?
Merci pour l'aide
Gabriel
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 26 janv. 2007 à 17:32
Salut,
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with ListBox1 do
begin
if odSelected in State then
begin
Canvas.Brush.Color:= clskyblue; // par exemple
Canvas.Font.Color:= clwhite;
end
else
begin
Canvas.Brush.Color:= Color;
Canvas.Font.Color:= Font.Color;
end;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]);
end;
end;
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 26 janv. 2007 à 21:21
@ cincap : je ne l'ai pas précisé, puisque tu l'avais toi-même mentionné. Mais comme style est une propriété publiée, tu peux le définir directement dans l'inspecteur d'objets. L'événement OnDrawItem n'est appelé que si style = lbOwnerDrawFixed ou lbOwnerDrawVariable.
Petite correction du code :
if (odSelected in State) or (odFocused in State) then...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_f6dqm1
Messages postés62Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention25 mai 2013 27 janv. 2007 à 08:21
Re:bjr
je vois qu'il y a des forts en Delphi sur ce forum.
En fait je testai le code de Nebula.
J'ai compris que lorsque l'on est en OwnerDrawFixed il faut tout gérer soi-même, même la surbrillance ! Je pensais naïvement que ça se faisait automatiquement.
Le "if odSelected as State" ne s'invente pas ! je n'aurais pas trouvé tout seul !
Merci de m'avoir ouvert les yeux !