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 :

Balayer un TreeView


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 402
    Points : 300
    Points
    300
    Par défaut Balayer un TreeView
    Bonjour,

    J'ai un pb qui va paraître ridicule à certains, mais je n'y arrive pas.
    C'est la première fois que j'utilise un TreeView !!

    J'ai un TreeView que je charge à partir d'un fichier texte, il est comme ceci :

    N1
    --NC1
    --NC2
    N2
    --NC3
    N3
    --NC4
    --NC5...

    Les NC sont les noeuds enfants des N bien évidemment.

    Je dois le retraduire dans un fichier texte ainsi :

    N1|NC1
    N1|NC2
    N2|NC3
    N3|NC4...

    Je n'arrive pas à balayer les noeuds et leurs noeuds enfants !

    Si vous avez un exemple merci d'avance

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Il suffit de parcourir les Items et d'utiliser le Parent, par exemple ici pour les ajouter dans un Memo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
       Node     : TTreeNode;
    begin
       for Node in TreeView1.Items do
       begin
          // uniquement les noeuds pères
          if Assigned(Node.Parent) then
             Memo1.Lines.Add(Node.Parent.Text + '|' + Node.Text);
       end;
    end;

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 402
    Points : 300
    Points
    300
    Par défaut
    Merci retwas c'est parfait !

    Je n'avais pas compris, pour moi, TreVeiw1.items ne contenait que les noeuds de premier rang et j’essayais avec les getfirst et getnext mais je n'arrivais pas à boucler correctement.

  4. #4
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 346
    Points : 3 124
    Points
    3 124
    Par défaut
    Bonjour,
    tu peux aussi utiliser la propriété Level, ce qui te permettrait de tester et d'écrire sur plusieurs niveaux.
    Avec seulement un niveau :

    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
    Procedure  TMainForm.ListTreeView;
    Var
      i       : Integer ;
      ANode   : TTreeNode ;
      NodeStr : string ;
    Begin
      Memo1.Clear ;
      NodeStr := '';
      If TreeView3.Items.Count > 0 then
         Begin
           ANode := TreeView3.Items[0] ;
           While ANode <> nil do
              Begin
                If ( ANode.Level = 0) Then
                   NodeStr :=  ANode.Text
                Else
                   Memo1.Lines.Add(NodeStr+'|'+ANode.Text) ;
                ANode := ANode.GetNext ;
              End;
         End;
    End;
    A+
    Charly

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 402
    Points : 300
    Points
    300
    Par défaut
    Si je résume : treeview1.items() permet d'accéder à tous les nœuds quelque soit leur niveau, Node.level permet de savoir à quel niveau est ce noeud.

    Merci à vous deux je commence à y voir un peu plus clair

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

Discussions similaires

  1. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/04/2009, 12h23
  2. TreeView -> ajouter un child à un noeud donné
    Par fake dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/03/2003, 17h14
  3. Réponses: 5
    Dernier message: 09/01/2003, 11h55
  4. où y a t il un tutorial pour le Treeview ??
    Par silvermoon dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/12/2002, 13h30
  5. [Pointer]Treeview.Data
    Par rbag dans le forum Composants VCL
    Réponses: 7
    Dernier message: 31/08/2002, 01h44

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