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 :

probleme Data Treeview


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Par défaut probleme Data Treeview
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct MyRec
    {
      AnsiString FUtilisateur;
      ...
     
    } TMyRec;
    typedef TMyRec* PMyRec;

    Je fais un for et a chaque tour MyRecPtr->FUtilisateur est initialiser par un autre AnsiString et est ajouter au Data d un nouveau noeud.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MyRecPtr->FUtilisateur = utilisateur_contact;
     
    MyTreeNodeChild=TreeView1->Items->AddChildObject(Node1,pseudo_contact,MyRecPtr);
     
    //RichEdit1->Lines->Add(MyRecPtr->FUtilisateur);---> la ca affiche ce qu il faut y a pas de probleme

    Maintenant je veux avoir acces au Data d un noeud en cliquant sur un noeud je veux qui m affiche ds un RichEdit le data, mais le probleme c est peut importe le noeud sur lekel je clic il me mes tjs le meme Data qui correspond au dernier noeud creer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    TTreeNode *tNode;
     
      tNode = TreeView1->GetNodeAt(X, Y); 
     
      if(tNode == NULL) 
      { return; } 
     
      if(tNode->Level == 1 && Button == mbRight) 
      {
        TreeView1->Selected = tNode;
        RichEdit1->Lines->Add(PMyRec(TreeView1->Selected->Data)->FUtilisateur);
     
       }

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Par défaut
    Essaye en utilisant l'évenement Change du TreeView:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    void __fastcall TForm1::TreeView1Change(TObject *Sender, TTreeNode *Node)
    {
      PMyRec* pMyRec =  (PMyRec*)TreeView1->Selected->Data;
      RichEdit1->Lines->Add( pMyRec->FUtilisateur );
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Par défaut
    Merci mais ca va pas j ai des erreurs de compilation

    [C++ Error] main1.cpp(686): E2288 Pointer to structure required on left side of -> or ->*
    [C++ Warning] main1.cpp(689): W8004 'pMyRec' is assigned a value that is never used

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Par défaut
    Oui évidement, j'avais fait un éssai rapide avec des AnsiString*
    et j'avais rapidement adapter avec ta structre pour la réponse.

    Essaye comme ça !
    Il faut juste enlever les '*'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TForm1::TreeView1Change(TObject *Sender, TTreeNode *Node)
    {
       PMyRec pMyRec =  (PMyRec)TreeView1->Selected->Data;
      RichEdit1->Lines->Add( pMyRec->FUtilisateur );
    }
    voilà le reste de mon code si ça ne suffit pas :

    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
     
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
     
      for(int index=0; index < 10; index++)
      {
        PMyRec pMyRec = new TMyRec;
        pMyRec->FUtilisateur = "Text " + IntToStr(index);
     
     
        TTreeNode* pNode = new TTreeNode( TreeView1->Items );
        TreeView1->Items->AddChildObject( pNode, "label "+IntToStr(index), pMyRec );
      }
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Par défaut
    lol merci mais je t assure ke ca afficher tjs le dernier Data du dernier noeud créé, pourtant apres chaque creation de noeud je verifie en affichant ds un RichEdit ce que j ai mis ds le Data et la y a pas de blem, mais je ne sais pas pkoi quand tout les noeuds enfant sont créé, je clic dessus pour recuperer leur data et l'afficher mais ca affiche tjs le contenue du Data du dernier noeud créé ... Est ce que y a une autre alternative pour stocker une données d'un noeud et la recupere kan je clic dessus ?

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    il faut recréer un nouvel object TMyRec pour chaque élément de ton TTreeView. En effet ce que tu places dans le membre data d'un TTreeNode c'est l'adresse de ce qui contient les données...donc dans ton code toutes les données sont le même TMyrec....

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

Discussions similaires

  1. [winforms] probleme de treeview
    Par yannnomad dans le forum Windows
    Réponses: 1
    Dernier message: 23/01/2007, 22h53
  2. Probleme sur treeview
    Par minette dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/12/2006, 09h50
  3. [VB.NET]Probleme Data Grid
    Par ba10 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/09/2006, 00h21
  4. [c#] Probleme ac treeview
    Par gilles641 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/06/2006, 18h07
  5. Probleme avec TreeView
    Par chleuh dans le forum Composants VCL
    Réponses: 3
    Dernier message: 13/08/2005, 20h41

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