Visual - Arborescence
Last modified by Isabelle FERRIERE on 2015/10/12 15:31
* Arborescence
NUM_BIN_4 WID_NOEUD
NUM_BIN_4 WID_NOEUD_A_SUPP
NUM_BIN_4 WID_PARENT
NUM_BIN_4 WID_PARENT_1
NUM_BIN_2 WPOS_NOEUD
ALPHA(250) WTXT_NOEUD
* Images
NUM_BIN_4 WIMG(4)
NUM_BIN_4 WID_NOEUD
NUM_BIN_4 WID_NOEUD_A_SUPP
NUM_BIN_4 WID_PARENT
NUM_BIN_4 WID_PARENT_1
NUM_BIN_2 WPOS_NOEUD
ALPHA(250) WTXT_NOEUD
* Images
NUM_BIN_4 WIMG(4)
* Vider l'arborescence
WID_NOEUD = _ARB_RACINE
APPELER_METHODE ARBO SUPPRIMER WID_NOEUD NB2
APPELER_METHODE ARBO SUPPRIMER WID_NOEUD NB2
* Expanser l'arborescence à l'initialisation
* Une fois l'arborescence remplie, expanser le noeud racine :
APPELER_METHODE ID_FEN0.ARBO EXPANSER ID_RACINE WEXPANSE RETOUR_NB2
APPELER_METHODE ID_FEN0.ARBO EXPANSER ID_RACINE WEXPANSE RETOUR_NB2
Exemple 1 : CALENDRIER
Remplissage de l'arborescence ARBO à partir de la liste des mois de l'année (WLST_MOIS),
puis séquentiellement avec les jours de la semaine.
**********************************************
* Ajouter le noeud racine : MOIS
WID_PARENT = _ARB_RACINE
WTXT_NOEUD = 'MOIS'
WPOS_NOEUD = _ARB_POS_FIN
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
SI NB2 = 1
* On va ajouter des noeuds enfants à MOIS
* Donc, on mémorise l'ID du noeud MOIS, qui devient noeud parent des mois de l'année
WID_PARENT_1 = WID_NOEUD
LECTURE_LST WLST_MOIS
* On va ajouter un noeud correspondant à chaque mois sous le parent MOIS
WID_PARENT = WID_PARENT_1
WPOS_NOEUD = _ARB_POS_FIN
WTXT_NOEUD = WMOIS
APPELER_METHODE ARBO AJOUTER WARBO_ID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
SI NB2 = 1
WID_PARENT = WID_NOEUD
* Sous le noeud du mois de l'année, on va ajouter 1 noeud enfant :
* - le n° du mois
WPOS_NOEUD = _ARB_POS_FIN
WTXT_NOEUD = &NUM_ALPHA(WMOIS_NO)
SI WMOIS_NO <= 9
WTXT_NOEUD = '0' /// WTXT_NOEUD
FIN
APPELER_METHODE ARBO AJOUTER WARBO_ID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
* A ce noeud "n° du mois", on a ajouter 1 noeud frère :
* - le nb de jours
SI NB2 = 1
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = &NUM_ALPHA(WNB_JOURS)
WTXT_NOEUD = WTXT_NOEUD /// ' jours'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
FIN
FIN
FIN_LECTURE_LST
FIN
**********************************************
* On ajoute un 2nd noeud racine : JOURS DE LA SEMAINE
WID_PARENT = _ARB_RACINE
WTXT_NOEUD = 'JOURS DE LA SEMAINE'
WPOS_NOEUD = _ARB_POS_FIN
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
* On va ajouter un noeud correspondant à chaque jour sous le parent JOURS DE LA SEMAINE
SI NB2 = 1
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_FIN
WTXT_NOEUD = 'Lundi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Mardi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Mercredi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Jeudi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Vendredi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Samedi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Dimanche'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WARBO_ID_NOEUD
FIN
* Ajouter le noeud racine : MOIS
WID_PARENT = _ARB_RACINE
WTXT_NOEUD = 'MOIS'
WPOS_NOEUD = _ARB_POS_FIN
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
SI NB2 = 1
* On va ajouter des noeuds enfants à MOIS
* Donc, on mémorise l'ID du noeud MOIS, qui devient noeud parent des mois de l'année
WID_PARENT_1 = WID_NOEUD
LECTURE_LST WLST_MOIS
* On va ajouter un noeud correspondant à chaque mois sous le parent MOIS
WID_PARENT = WID_PARENT_1
WPOS_NOEUD = _ARB_POS_FIN
WTXT_NOEUD = WMOIS
APPELER_METHODE ARBO AJOUTER WARBO_ID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
SI NB2 = 1
WID_PARENT = WID_NOEUD
* Sous le noeud du mois de l'année, on va ajouter 1 noeud enfant :
* - le n° du mois
WPOS_NOEUD = _ARB_POS_FIN
WTXT_NOEUD = &NUM_ALPHA(WMOIS_NO)
SI WMOIS_NO <= 9
WTXT_NOEUD = '0' /// WTXT_NOEUD
FIN
APPELER_METHODE ARBO AJOUTER WARBO_ID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
* A ce noeud "n° du mois", on a ajouter 1 noeud frère :
* - le nb de jours
SI NB2 = 1
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = &NUM_ALPHA(WNB_JOURS)
WTXT_NOEUD = WTXT_NOEUD /// ' jours'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
FIN
FIN
FIN_LECTURE_LST
FIN
**********************************************
* On ajoute un 2nd noeud racine : JOURS DE LA SEMAINE
WID_PARENT = _ARB_RACINE
WTXT_NOEUD = 'JOURS DE LA SEMAINE'
WPOS_NOEUD = _ARB_POS_FIN
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
* On va ajouter un noeud correspondant à chaque jour sous le parent JOURS DE LA SEMAINE
SI NB2 = 1
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_FIN
WTXT_NOEUD = 'Lundi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Mardi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Mercredi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Jeudi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Vendredi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Samedi'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WID_NOEUD
WPOS_NOEUD = _ARB_POS_APRES
WTXT_NOEUD = 'Dimanche'
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
WID_PARENT = WARBO_ID_NOEUD
FIN



Exemple 2 : NOMBRES
Remplissage de l'arborescence ARBO à partir de la liste des nombres (WLST_NB) de 1 à 1000, écrits en chiffres (WNB_CH) et en lettres (WNB_LTR).
* Ajouter le noeud racine : NOMBRES
WID_PARENT = _ARB_RACINE
WTXT_NOEUD = 'NOMBRES'
WPOS_NOEUD = _ARB_POS_FIN
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
SI NB2 = 1
* On mémorise l'ID du noeud racine NOMBRES, qui sera parent pour le nombre 1
WID_PARENT = WID_NOEUD
LECTURE_LST WLST_NB
* On initialise le texte du noeud : le nombre aligné à droite, suivi de sa valeur en texte
WTXT_NOEUD = &NUM_ALPHA(WNB_CH)
SI WNB_CH <= 9
WTXT_NOEUD = ' ' // WTXT_NOEUD
SINON_SI WNB_CH <= 99
WTXT_NOEUD = ' ' // WTXT_NOEUD
SINON_SI WNB_CH <= 999
WTXT_NOEUD = ' ' // WTXT_NOEUD
FIN
WTXT_NOEUD = WTXT_NOEUD /// ' -> ' // WNB_LTR
* Si nombre 1, on va insérer un noeud enfant
* Pour les autres nombres, on va insérer un noeud frère
SI WNB_CH = 1
WPOS_NOEUD = _ARB_POS_FIN
SINON
WPOS_NOEUD = _ARB_POS_APRES
FIN
* On insère le noeud
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
* On mémorise l'ID du dernier noeud inséré afin de lui ajouter un noeud frère
SI NB2 = 1
WID_PARENT = WID_NOEUD
FIN
FIN_LECTURE_LST
FIN
WID_PARENT = _ARB_RACINE
WTXT_NOEUD = 'NOMBRES'
WPOS_NOEUD = _ARB_POS_FIN
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
SI NB2 = 1
* On mémorise l'ID du noeud racine NOMBRES, qui sera parent pour le nombre 1
WID_PARENT = WID_NOEUD
LECTURE_LST WLST_NB
* On initialise le texte du noeud : le nombre aligné à droite, suivi de sa valeur en texte
WTXT_NOEUD = &NUM_ALPHA(WNB_CH)
SI WNB_CH <= 9
WTXT_NOEUD = ' ' // WTXT_NOEUD
SINON_SI WNB_CH <= 99
WTXT_NOEUD = ' ' // WTXT_NOEUD
SINON_SI WNB_CH <= 999
WTXT_NOEUD = ' ' // WTXT_NOEUD
FIN
WTXT_NOEUD = WTXT_NOEUD /// ' -> ' // WNB_LTR
* Si nombre 1, on va insérer un noeud enfant
* Pour les autres nombres, on va insérer un noeud frère
SI WNB_CH = 1
WPOS_NOEUD = _ARB_POS_FIN
SINON
WPOS_NOEUD = _ARB_POS_APRES
FIN
* On insère le noeud
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
* On mémorise l'ID du dernier noeud inséré afin de lui ajouter un noeud frère
SI NB2 = 1
WID_PARENT = WID_NOEUD
FIN
FIN_LECTURE_LST
FIN


Exemple 3 : ARBORESCENCE AVEC IMAGE
Les noeuds de l'aborescence sont précédés d'une image.
Le texte de chaque noeud est d'une couleur différente.
* Initialisation de la liste d'images
WIMG = 0
APPELER_METHODE ARBO AJOUTER_IMAGE 'Printemps.jpg' WIMG(1) NB2
APPELER_METHODE ARBO AJOUTER_IMAGE 'Eté.jpg' WIMG(2) NB2
APPELER_METHODE ARBO AJOUTER_IMAGE 'Automne.jpg' WIMG(3) NB2
APPELER_METHODE ARBO AJOUTER_IMAGE 'Hiver.jpg' WIMG(4) NB2
* Initialisation de l'arborescence ARBO
APPELER_METHODE ARBO SUPPRIMER _ARB_RACINE NB2
APPELER_METHODE ARBO AJOUTER _ARB_RACINE _ARB_POS_FIN 'Saisons' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_SYSTEME NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD 0 _ARB_TOUS_ETATS NB2
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_FIN 'Printemps' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_VERTFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(1) _ARB_TOUS_ETATS NB2
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_APRES 'Eté' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_BLEUFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(2) _ARB_TOUS_ETATS NB2
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_APRES 'Automne' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_ROUGEFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(3) _ARB_TOUS_ETATS NB2
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_APRES 'Hiver' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_GRISFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(4) _ARB_TOUS_ETATS NB2
WIMG = 0
APPELER_METHODE ARBO AJOUTER_IMAGE 'Printemps.jpg' WIMG(1) NB2
APPELER_METHODE ARBO AJOUTER_IMAGE 'Eté.jpg' WIMG(2) NB2
APPELER_METHODE ARBO AJOUTER_IMAGE 'Automne.jpg' WIMG(3) NB2
APPELER_METHODE ARBO AJOUTER_IMAGE 'Hiver.jpg' WIMG(4) NB2
* Initialisation de l'arborescence ARBO
APPELER_METHODE ARBO SUPPRIMER _ARB_RACINE NB2
APPELER_METHODE ARBO AJOUTER _ARB_RACINE _ARB_POS_FIN 'Saisons' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_SYSTEME NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD 0 _ARB_TOUS_ETATS NB2
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_FIN 'Printemps' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_VERTFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(1) _ARB_TOUS_ETATS NB2
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_APRES 'Eté' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_BLEUFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(2) _ARB_TOUS_ETATS NB2
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_APRES 'Automne' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_ROUGEFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(3) _ARB_TOUS_ETATS NB2
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_APRES 'Hiver' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_GRISFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(4) _ARB_TOUS_ETATS NB2

Articles connexes
Les articles connexes apparaissent ici en fonction des étiquettes que vous avez sélectionnées. Cliquez pour modifier la macro et ajouter ou modifier des étiquettes.