* 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)
* Vider l'arborescence
WID_NOEUD = _ARB_RACINE 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
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
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
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
Articles connexes