TREEVIEW level

Signaler
Messages postés
3
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
17 août 2009
-
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
-
Bonjour à tous,


Voici mon problème:


dans un treeview j'ai par exemple:


NIVEAU_0

...NIVEAU_01

..........NIVEAU_02 etc..

...NIVEAU_01

..........NIVEAU_02 etc..


comment récupérer dans un memo , à l'aide d'une boucle la valeur numérique du niveau de chaque entrée.

exemple:

procedure TForm1.SpeedButton1Click(Sender: TObject);

var i:integer;

begin

Memo1.Clear;

treeview1.FullExpand;

with treeview1 do

for i := 0 to items.count-1 do

begin

memo1.Lines.Add('#');

case treeview1.selected.level of

0: memo1.Lines.Add('Level=0');

1: memo1.Lines.Add('Level=1');

2: memo1.Lines.Add('Level=2');

3: memo1.Lines.Add('Level=3');

end;

memo1.Lines.Add('Text=' + items[i].Text);

end;

end;


Avec cet exemple je récupère bien item[i].text mais tous les levels sont égaux à 0.


MERCI POUR VOTRE AIDE.
A voir également:

2 réponses

Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
normal tu utilises case treeview1.selected.level of
donc il faut que les noeuds soient sélectionnés..

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  HT : THitTests;
  begin
     with Sender as TTreeView do 
        begin
          HT := GetHitTestInfoAt(X,Y);
          if (htOnItem in HT) then
          memo1.Lines.Add(TTreeNode(GetNodeAt(X,Y)).Text);
       end;
  end;

J'ai pas testé..


cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
dsl, ça marche pas..

Voilà une procédure qui fonctionne sur le OnMouseDown :

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  HT: THitTests;
  AnItem: TTreeNode;
begin
  with Sender as TTreeView do
  begin
    HT := GetHitTestInfoAt(X, Y);
    AnItem := TreeView1.GetNodeAt(X, Y);
    if (htOnItem in HT) then
       memo1.Lines.Add(AnItem.Text);
  end;
end;

que tu peux adapter à tes besoins..

cantador