[ASTUCE] Sous-catégories infinies
Publié : sam. 26/août/2017 10:07
Bonjour à tous,
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
Voilà j'espère que cela vous aura appris quelque chose qui pourra vous être utile.
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 ...

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())