Je vous propose une petite astuce pour concevoir un code qui permet pour l'exemple de créer des catégories qui peuvent avoir des sous-catégories qui peuvent elle-même avoir des sous-catégories qui peuvent elle-même avoir des sous-catégories qui peuvent elle-même avoir des sous-catégories qui peuvent elle-même avoir des sous-catégories ...
Houla je m'arête la
Pour implémenter cela il faut savoir deux choses importantes
- Une structure peut contenir sa propre structure
- Une procédure peut s'appeler elle-même
Code : Tout sélectionner
Structure CATEGORIE
nom.s
List mesCategorie.CATEGORIE()
EndStructure
Global NewList mesCategorie.CATEGORIE()
Procedure AjouteCategorie(Nom.s,*categorie_Mere.CATEGORIE=0)
; Si une catégorie mère est renseignée
If *categorie_Mere
AddElement(*categorie_Mere\mesCategorie())
*categorie_Mere\mesCategorie()\nom=nom
ProcedureReturn *categorie_Mere\mesCategorie()
Else
AddElement(mesCategorie())
mesCategorie()\nom=Nom
ProcedureReturn mesCategorie()
EndIf
EndProcedure
Procedure LitCategories(List cat.CATEGORIE())
ForEach cat()
Debug cat()\nom
ForEach cat()\mesCategorie()
LitCategories(cat()\mesCategorie())
Next
Next
EndProcedure
; Ajout de quelque catégories
Define *cat=AjouteCategorie("Catégorie A")
AjouteCategorie(" sous-Catégorie de A A1",*cat)
AjouteCategorie(" sous-Catégorie de A A2",*cat)
*cat=AjouteCategorie("Catégorie B")
AjouteCategorie(" sous-catégorie B BA",*cat)
*cat=AjouteCategorie(" sous-catégorie B BB",*cat)
AjouteCategorie(" sous-catégorie de la sous-categorie BB BBA",*cat)
AjouteCategorie(" sous-catégorie de la sous-categorie BB BBB",*cat)
AjouteCategorie("Catégorie C")
LitCategories(mesCategorie())