IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

[TreeView] Parcourir


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 146
    Par défaut [TreeView] Parcourir
    Bonjour !

    Je voudrais savoir comment il est possible de lister tous les noeuds d'un treeview.

    Cela doit revenir à parcourir tous les noeuds d'un arbre n-aire ...

    Auriez vous un exemple ?

    Merci

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 944
    Par défaut
    Voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i:=0 to TreeView1.Items.Count-1 do
            { ce que tu veux faire avec TreeView1.Items[i].xxxxx (Text,Level, etc... };

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 146
    Par défaut
    oui, mais non ... :s

    Ce que je cherche à faire, c'est une fonction recursive qui fait un parcours en profondeur de l'arbre, quel que soit son nombre de niveaux et d'items...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 146
    Par défaut
    Voici le code que j'ai ecrit (non fonctionnel):

    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
    procedure TfrmMain.FillNodeList(nodeList : TList ; firstBranchID : Integer);
    var
          i : Integer;
          branchID : Integer;
          myCurrentNode : TTreeNode;
    Begin
          myCurrentNode := TTReeNode.Create(tvwBiblio.Items);
          myCurrentNode.Assign(tvwBiblio.Selected) ;
          branchID := integer(myCurrentNode.Data);
          with myCurrentNode do
                  while (myCurrentNode.SelectedIndex < myCurrentNode.Count) do
                    Begin
                        showmessage(inttostr(myCurrentNode.SelectedIndex));
                        nodeList.Add(pointer(branchID));
                        FillNodeList(nodeList,i);
                  end;
          myCurrentNode.Free;
    end;
    Une idée pour que ca marche ?

  5. #5
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    J'ai du mal à saisir ce à quoi doit aboutir ton code. Et pourquoi absolument une fonction récursive ?

    Un simple parcours de l'arborescence avec l'itération proposée par qi130 ne peut pas convenir ?

    @+ Claudius

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 146
    Par défaut
    Le but est de parcourir tous les 'Nodes' d'un TreeView afin de recupérer dans chaque Node la valeur du champs DATA.

    La préocupation principale est donc de parcourir tout un arbre quel que soit sa profondeur.

    Il faut donc une fonction récursive car on ne connait pas le nombre de branche par noeud.

    Voici la solution...

    (Ici la fonction remplis une TList en plus)

    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
     
    procedure TfrmMain.FillNodeList(nodeList : TList ; node : TTreeNode);
    var
          i : Integer;
          branchID : Integer;
    Begin
        with Node do
            Begin
                i:= 0;
                while (i < Count) do
                Begin
                    branchID := integer(Item[i].Data);
                    nodeList.Add(pointer(branchID));
                    FillNodeList(nodeList,Item[i]);
                    inc(i);
                end;
            end;
    end;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Treeview Parcourir les noeuds enfants
    Par damsmut dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/08/2010, 10h35
  2. Réponses: 15
    Dernier message: 16/04/2008, 11h16
  3. [VB2005 ]Parcourir tous les noeuds d'un treeview
    Par exclusif dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/07/2007, 22h38
  4. Parcourir enfants d'un noeud de TreeView
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 7
    Dernier message: 01/03/2007, 11h45
  5. Parcourir les noeuds d'un TreeView
    Par Andry dans le forum Composants VCL
    Réponses: 4
    Dernier message: 08/11/2005, 07h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo