Changement de couleur des lignes sélectionnées par programme dans un TListView [Résolu]

Messages postés
33
Date d'inscription
lundi 19 avril 2004
Dernière intervention
18 août 2010
- 11 nov. 2009 à 19:41 - Dernière réponse :
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
33
Date d'inscription
lundi 19 avril 2004
Dernière intervention
18 août 2010
- 11 nov. 2009 à 21:47
3
Merci
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

Merci jjnouiphp 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de jjnouiphp
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
- 12 nov. 2009 à 00:33
0
Merci
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 !
Commenter la réponse de Bacterius
Messages postés
33
Date d'inscription
lundi 19 avril 2004
Dernière intervention
18 août 2010
- 12 nov. 2009 à 22:50
0
Merci
@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
Commenter la réponse de jjnouiphp
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
- 12 nov. 2009 à 23:00
0
Merci
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 !
Commenter la réponse de Bacterius

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.