Bonjour à tous,

Je rencontre un problème avec l'utilisation d'un TreeView...Je souhaiterais affecter une case à cocher sur tous les noeuds (parents et enfants). Je sais qu'il existe des composants conçuent spécialement pour mais je n'ai pas le droit de les utiliser dans le cadre de mon job.

Voici le code que j'ai (merci aux membres de dévellopez.com ) tiré de cet exemple.:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TForm1.TreeView1Click(Sender: TObject);
var
  P : TPoint;
begin
  GetCursorPos(P);
  P := Treeview1.ScreenToClient(P);
  if (htOnStateIcon in Treeview1.GetHitTestInfoAt(P.X, P.Y)) then
    GestTreeViewCheckBoxes(Treeview1.Selected);
end;
 
procedure TForm1.GestTreeViewCheckBoxes(Node : TTreeNode);
const
  cUnChecked = 0;
  cChecked = 1;
begin
  if Assigned(Node) then
    begin
      if Node.StateIndex = cUnChecked then
        begin
          Node.StateIndex := cChecked;
          if Node.Parent.StateIndex = cUnChecked then Node.Parent.StateIndex := cChecked;
        end
      else
        if Node.StateIndex = cChecked then
        Node.StateIndex := cUnChecked
    end;
end;
Mon problème c'est que lorsque je clic sur une case à cocher, c'est toujours le premier élément qui est coché/décoché lorsque je clic sur les cases (sauf sur la première parceque là ça fait rien du tout.

J'écoute toute suggestion, merci d'avance

A+.