Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
764 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  TreeView sous Visual C++.Net

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

TreeView sous Visual C++.Net

n°1312794
Alpha Lead​er
Do, or do not. There's no try.
Posté le 24-02-2006 à 05:17:52  profilanswer
 

Bonjour à tous.
 
Je vous présente ma situation :
 
J'ai une table dans une BD qui contient plein de nom de catégories. Chaque catégorie contient un champ nommé "CatégorieMere" qui défini la Catégorie mère de celle-ci. Les grandes catégories (ROOT) possèdent une valeur vide à ce champ.
 
Par exemple :
 
NomCategorie : "Objet3D"                     CatégorieMere : ""
NomCategorie : "Table"                        CategorieMere : "Objet3D"
NomCategorie : "Bois"                          CategorieMere : "Table"
NomCategorie : "Personnage"                CategorieMere : ""
 
Vous voyez donc la logique, comme quoi que dans mon arborescence, l'Objet Table se trouvera en dessous d'Objet 3D.
 
J'ai positionné un combobox en readonly (je ne peux donc écrire dedans) qui trouve les catégories meres et me les affichent. En fonction de celle que je sélectionne dans ce combobox, l'arborescence se construira, mais uniquement les catégories descendantes de la catégorie-mère sélectionnée. Par ailleurs, chaque catégorie peut aussi être une catégorie-mère. Je dois donc effectuer une recursive afin de toujours vérifier que la dernière catégorie inscrite n'est pas la catégorie-mère d'une autre. Donc, une catégorie pourrait se trouver seule et sans enfants, tandis qu'une autre pourrait en avoir un nombre x, et ceux-ci aussi.
 
J'ai de la misère à figurer la récursive. Jusqu'à présent, j'ai réussi à afficher les catégories en dessous de "Objet3D" qui est une catégorie ROOT. Voilà ce que j'ai pour l'instant :
 

Code :
  1. void FormulairePrincipalAvance::CreerArborescence(String* sNomCategorieMere)
  2. {
  3. CCategorie* oCategorie;
  4. for (int i = 0; i < arCategories->Count; i++)
  5. {
  6.  oCategorie = reinterpret_cast<CCategorie*>(arCategories->get_Item(i));
  7.  if (oCategorie->get_NomCategorieMere()->Equals(sNomCategorieMere))
  8.  {
  9.   TreeNode* TreeItem;
  10.   for (int i = 0; i < tViewItems->Nodes->Count; i++)
  11.   {
  12.    TreeItem = tViewItems->Nodes->get_Item(i);
  13.    if (TreeItem->Text->Equals(sNomCategorieMere))
  14.    {
  15.     TreeItem = TreeItem->Nodes->Add(oCategorie->get_NomCategorie());
  16.    }
  17.   }
  18.  }
  19. }
  20. }


 
Les objets CCategories sont en fait une représentation via une classe de la BD. Je charge tout ce que j'ai dans ma BD dans des objets mémoire pour améliorer le temps et ne pas être dépendant de la BD en tout temps.
 
Donc ma question est, comment structurer mon programme et mes appels afin d'effectuer une récursive ? La fonction ci-haut vérifie en fait 1 couche du TreeView pour une catégorie-mère spécifique. J'ai un nombre indéterminé de couches dans mon TreeView, je ne peux donc pas faire une boucle statique ou encore vérifier combien j'ai de couches ou items dans mon treeview, puisqu'il est en construction ! Je peux aussi avoir plusieurs catégories par couche (un objet "Table" et un objet "Chaise" directement sous "Objet3D" par exemple).
 
Merci de toute aide :)


Message édité par Alpha Leader le 24-02-2006 à 05:19:38
mood
Publicité
Posté le 24-02-2006 à 05:17:52  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  TreeView sous Visual C++.Net

 

Sujets relatifs
Qt 4 + visual c++ 6 = j'ai du oublier de paramétrer quelque choseFonctionalité Visual Studio 2005
[visual 2003] [ifstream] problème de tellg en ios::binary[VISUAL C++] quel message est envoyé ?
Durée d'installation de Visual Studio 2005Soap et .NET 2.0
[Apache] Module .NET pour plateforme Microsoft ?[resolu] Plugin Visual Editor ne fonctionne pas.
[ASP.NET] Version mobile[VB.Net] Application Pocket PC / Aide
Plus de sujets relatifs à : TreeView sous Visual C++.Net


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR