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

C++Builder Discussion :

Ordonnée des données dans un TreeView [Non suivi]


Sujet :

C++Builder

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    Par défaut Ordonnée des données dans un TreeView
    Bonjour,

    en faite j'utilise une BDD utilisant 2 tables. Une contenant les livres loués et l'autres les Utilisateurs qui loués.

    Voici les champs des tables

    TableLocation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Index (Numéros auto-incrémenté et unique)
    Nom (Nom du livre loué)
    Loué (Mis a 1 si le livre est Loué, mis à 0 si le livre est rendu)
    Loueur (Représente l'Index du loueur situé dans l'autre table)
    TableLoueur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Index (Numéros auto-incrémenté et unique)
    Nom (Nom du loueur)
    Adresse (Adresse du loueur)
    J'aimerais bien mettre ces données dans un TreeView avec comme Noeud racine le nom du loueur et comme Noeud enfant les livres qu'il a loué style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    +Emile Dupont (Noeud racine)
           -> Nana (Noeud enfant)
           -> Le rouge et le noir
           -> Dartagnant
    +Jacques Moulin
           -> Harry Potter
    +Emile Drepes
           -> Le dernier juré
           -> Dan Brown
    Réccupérer les infos je sais faire mais pas les ordonner dans un TreeView.
    Voila ce qui s'affiche avec mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    +Emile Dupont (Noeud racine)
           -> Nana (Noeud enfant)
    +Jacques Moulin
           -> Harry Potter
    +Jacques Moulin
           -> Dartagnant
    +Emile Drepes
           -> Dan Brown
    ... etc ...
    et le code :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
      int i=0;
     
      Form1Principale->QueryListingCD->SQL->Add((String)"select * FROM Louer");
      Form1Principale->QueryListingCD->Open();
      Form1Principale->QueryListingCD->First();
     
      Form1Principale->TreeView->Items->Clear();
     
      while(!Form1Principale->QueryListingCD->Eof)
      {
        // on récupère les champs de la table TableLouer
        asLouerNom = Form1Principale->QueryListingCD->FieldByName("Nom")->AsString; //Nom du livre loué
        iLouerIndex = Form1Principale->QueryListingCD->FieldByName("Index")->AsInteger; //Index de l'élément loué
        iLouerLoueur = Form1Principale->QueryListingCD->FieldByName("Loueur")->AsInteger; //Numéros du Loueur
     
        //On réccupère le nom du loueur a partir de son Index
        Form1Principale->QueryListingCDTmp->SQL->Clear();
        Form1Principale->QueryListingCDTmp->SQL->Add((String)"select Nom FROM Loueur WHERE Index="+iLoueur);
        Form1Principale->QueryListingCDTmp->Open();
        Form1Principale->QueryListingCDTmp->First();
        asLoueur = Form1Principale->QueryListingCDTmp->FieldByName("Nom")->AsString;     
     
        // on ajoute une ligne (a mon avis c'est ici qu'il faut modifier des trucs)
        Form1Principale->TreeView->Items->Add(NULL,asLouerLoueur); //Nom du loueur Noeud racine
        Form1Principale->TreeView->Items->AddChild(Form1Principale->TreeView->Items->Item[i],asLouerNom);  //Livre loué Noeud enfant
          i=i+2;
     
     
        // on passe à la ligne suivante
        Form1Principale->QueryListingCD->Next();
      }
    MERCI DE VOTRE AIDE

  2. #2
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,
    Je vais te donner mon avis sous caution car n'etant ni pro ni étudiant, je n'ai pas toujours des méthodes tres académiques...
    Pourquoi ne le fais tu pas en 2 temps ?
    Dans un premier temps, avec ta boucle 'while' tu ajoutes les noeuds représentants les personnes ayant loué des livres :
    Form1Principale->TreeView->Items->Add(NULL,asLouerLoueur);
    puis une fois la boucle finie, tu parcours les items de ton treeview avec une nouvelle boucle style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int t = 0; t < Form1Principale->TreeView->Items->Count; t++) 
    {
    //
    }
    Dans cette boucle tu désignes chaque item rencontré par un TTreeNode, style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TTreeNode *NodeLoueur; //En amont
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NodeLoueur = Form1Principale->TreeView->Items->Item[t];
    Tu te sert de :
    par exemple pour avoir le nom du loueur et faire la requete pour savoir qu'est ce qu'il a loué puis tu fais une nouvelle boucle while sur le résultat de cette requete pour ajouter les 'enfants - livres' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Form1Principale->TreeView->Items->AddChild(NodeLoueur,'Valeur issue de ta requete');
    J'espère malgré tout etre suffisamment clair pour te donner un petit coup de main ...
    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    Par défaut
    Je te REMERCIE BCP sa a marché comme je voulais.

    Maintenant j'ai juste encore une petite question. Comment on réccupère le Nom de l'élément enfant qui est sélectionné. Je ne veux jamais récupéré le nom de l'élément parent car j'ai des opérations a éffectué sur les Nom des éléments enfant qui font planté le soft si on les éléments du noeud parents.

  4. #4
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Salut,
    Bon tant mieux si j'ai pu t'aider parceque je n'avais pas le sentiment d'avoir été tres clair...
    Testes ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for (int i = 0; i < Form->TreeView->Items->Count; i++)
    {
    if (Form->TreeView->Items->Item[i]->Selected && Form->TreeView->Items->Item[i]->HasChildren == false)
    {
     
    }
     
    }
    ca parait rustique ( ) mais ca devrait extraire l'item sélectionné si il n'a pas d'enfants...
    En espérant que ca marche correctment et que ca répondes a ta question au mieux...
    @ + (de retour dans 3 heures, facile... )
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/02/2008, 10h18
  2. Pbs pour Glisser-Deplacer des noeuds dans un TreeView.
    Par psau dans le forum C++Builder
    Réponses: 3
    Dernier message: 08/09/2004, 21h02
  3. chercher des données dans sa propre requete...
    Par shadowbob dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/06/2004, 17h13
  4. Réponses: 3
    Dernier message: 22/02/2004, 20h09
  5. Temps d'accès à des données dans un fichier
    Par TONIAPEL dans le forum Assembleur
    Réponses: 5
    Dernier message: 28/09/2003, 15h21

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