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
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
-
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.

2 réponses

Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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