Désélectionner une ligne de mon listview [Résolu]

- - Dernière réponse :  Utilisateur anonyme - 5 oct. 2017 à 00:40
Bonjour à tous,
Avec cette procédure, je sélectionne la ligne de mon Tlistview lorsque je coche la case à cocher.
Mais, si je décoche la case, j'aimerais ne plus avoir la ligne sélectionnée.
J'ai pas trouvé
Quelqu'un peut-il m'aider ?,
Cordialement.

procedure TForm1.ListViewMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var
  Item: TListItem;
  i, j: Integer;
begin
Item := ListView.GetItemAt(X, Y);
  if Item <> nil then
    if ListView.Selected <> Item then
      begin
        ListView.Selected := Item;
      end;
//      Else
End;
Afficher la suite 

2 réponses

Messages postés
4233
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 juillet 2019
32
0
Merci
Bonjour,

de tête comme ça je dirais:
ListView.Selected := nil;


cordialement,
Utilisateur anonyme -
bonjour,
perdu !!,
non, ça marche pas, j'avais essayé avant de mettre un post
merci !! et bon codding
Utilisateur anonyme -
bonsoir Cirec;

J'ai trouvé, mais c'est pas vraiment superbe
      Else
      begin
        Item := nil;
        ListView1.Selected := Nil;
      end;

merci pour ton aide, suite à ta réponse, j'ai recherché et trouvé plus ou moins une solution
MERCI À TOI !!!!!
Commenter la réponse de Cirec
Messages postés
4233
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 juillet 2019
32
0
Merci
re,

ben je viens de faire le teste et ça fonctionne bien chez moi avec D7 !!!

//1 TListView contenant 26 Items de A à Z
//avec CheckBoxes et 
//Multiselect à True ou False  (n'a aucune incidence)
//1 TMemo
//2 TButton

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListView1.Selected := ListView1.Items[1];
  ListView1.Selected := ListView1.Items[2];
  ListView1.SetFocus;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ListView1.Selected := nil;
  ListView1.SetFocus;
end;

procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin  
  Item.Checked := Selected;
  if Selected then
    Memo1.Lines.Add('Selected: '+Item.Caption)
  else
    Memo1.Lines.Add('Unselected: '+Item.Caption);
end;

procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
  Change: TItemChange);
begin
  Item.Selected := Item.Checked;
end;



Cordialement,
Utilisateur anonyme -
bonjour Cirec;
Un Immense MERCI;
c'est mille fois mieux que ma procédure OnMousedown !!!!
et avec un CheckBox dans la colonnne [0];
OnClick du CheckBox je sélectionne tous mes Items,
et avec la procédure ListView1CustomDrawItem
if CheckBox1.Checked=true then
  begin
    Sender.Canvas.Brush.Color := clHighlight;
  end;

tous les items sont de couleur de fond clHighlight.

Mille fois merci
Cordialement
Commenter la réponse de Cirec