TREEVIEW level

NOSSYLA Messages postés 3 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 17 août 2009 - 28 mars 2008 à 15:10
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 29 mars 2008 à 16:49
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

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
29 mars 2008 à 15:52
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
29 mars 2008 à 16:49
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
0
Rejoignez-nous