Changement de couleur des lignes sélectionnées par programme dans un TListView

Résolu
jjnouiphp Messages postés 33 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 21 janvier 2020 - 11 nov. 2009 à 19:41
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 12 nov. 2009 à 23:00
Bonjour,
Je souhaite que lorsque je sélectionne par programme plusieurs lignes d'un TListView, ces lignes soient colorées comme lorsqu'il s'agit d'une sélection manuelle.

Lorsque je sélectionne par programme toutes les lignes, pas de changement d'affichage, par contre si ensuite j'en déselectionne une par ctl + click la couleur apparait sur les autres lignes.

J'utilise Form1.refresh après la sélection par programme, j'ai aussi testé ceci trouvé sur le site, (proposé par Cincap)

procedure TForm1.LstOpenFlyersCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
with Sender as TListView do begin
with Canvas do begin
if Item.Selected then begin
Brush.Color := rgb(220,220,255);
Pen.Style := psDot;
Pen.Color := clGray;
end
else begin
Brush.Color := rgb(255,255,255);
Pen.Style := psSolid;
Pen.Color := Brush.Color;
end;
end;
end;
end;


mais cela ne fonctionne pas.
Une idée?
Merci

4 réponses

jjnouiphp Messages postés 33 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 21 janvier 2020 1
11 nov. 2009 à 21:47
Désolé, j'avais pourtant cherché....
Puis un sursaut ?
Trouvé la solution en m'inspirant d'un source de Gbegreg :


procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
begin
  if Item.Selected = true then begin
    Sender.Canvas.Brush.Color := clHighlight;

Sender.Canvas.Font.Color := clWhite;
Sender.Canvas.Font.Style := [fsBold];
end
else begin
Sender.Canvas.Brush.Color := clWhite;
Sender.Canvas.Font.Style := [];
Sender.Canvas.Font.color := clBlack;
end;
end;/code
3
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
12 nov. 2009 à 00:33
Franchement je trouve qu'on devrait te donner un cadeau
Tu es un des rares membres qui cherche des informations sur la toile ou même sur CS.

Cordialement, Bacterius !
0
jjnouiphp Messages postés 33 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 21 janvier 2020 1
12 nov. 2009 à 22:50
@Bactérius : Franchement je ne sais pas si ta réponse est à prendre au 1er degré (effectivement le problème des écrits c'est qu'il y manque l'intonation).
En tout cas, je me sens relativement 'propre' car une fois résolu mon problème je transmets la solution.

Allez continuez, vous servez beaucoup (je le pense sincèrement)

Cordialement, jj
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
12 nov. 2009 à 23:00
Ca dépend ... faut-il vraiment offrir quelque chose à certains individus pour qu'ils se mettent à chercher ? Je disais ça à cause de la conjoncture actuelle des évènements (voir le méga-thread de Cboulas).
Il faut prendre mes messages comme on le sent, c'est généralement la bonne réponse avec moi.

Cordialement, Bacterius !
0
Rejoignez-nous