AJOUTER A LISTE

4D - Documentation   Français   English   German   Español   Japanese   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 11 (Modifiée)


AJOUTER A LISTE (liste; texteElément; réfElément{; sous_Liste; déployée})

ParamètreTypeDescription
listeRéfListeNuméro de référence de liste
texteElémentChaîneLibellé du nouvel élément
réfElémentRéfElémentNuméro de référence unique du nouvel élément
sous_ListeRéfListeSous-liste optionnelle à rattacher au nouvel
élément
déployéeBooléenIndique si la sous-liste doit être déployée ou non

Description

La commande AJOUTER A LISTE ajoute un nouvel élément à la liste hiérarchique dont vous avez passé le numéro de référence dans le paramètre liste.

Vous passez le libellé de l'élément dans le paramètre texteElément. Vous pouvez passer une expression de type Alpha ou Texte, pouvant contenir jusqu'à 2 milliards de caractères.

Vous passez le numéro de référence unique de l'élément (de type Entier long) dans le paramètre réfElément. Même si nous qualifions ce numéro de référence d'élément comme unique, vous pouvez en réalité passer la valeur que vous voulez. Reportez-vous à la section Gestion des listes hiérarchiques pour plus d'informations sur le paramètre réfElément.

Si vous souhaitez également que l'élément comporte des sous-éléments, passez un numéro de référence de liste valide dans le paramètre sous_Liste. Dans ce cas, vous devez également passer le paramètre déployé. Passez Vrai ou Faux dans ce paramètre pour que cette sous-liste s'affiche respectivement déployée ou contractée.

La référence de la liste que vous passez dans sous_Liste doit être une liste existante. Elle peut comporter un seul niveau ou contenir elle-même des sous-listes. Si vous ne voulez pas rattacher de sous-liste au nouvel élément, omettez le paramètre ou passez 0. Si vous passez le paramètre sous_Liste et ne passez pas le paramètre déployée, la sous-liste apparaît par défaut contractée.

Conseils

Pour insérer un nouvel élément dans une liste, utilisez INSERER DANS LISTE. Pour modifier le libellé d'un élément existant ou sa sous-liste, ainsi que son état déployé/contracté, utilisez CHANGER ELEMENT.

Pour changer l'apparence de l'élément ajouté, utilisez CHANGER PROPRIETES ELEMENT.

Exemple

Voici une vue partielle de la structure d'une base :

Les tables [Départements] et [Employés] contiennent les enregistrements suivants :

Vous voulez utiliser une liste hiérarchique, appelée hlList, qui affiche les départements, et pour chaque département, une sous-liste contenant les employés travaillant dans ce département. La méthode objet de hlList est la suivante:

      ` Méthode objet Liste hiérarchique hlList

   Au cas ou 

      : (Evenement formulaire=Sur chargement)
         C_ENTIER LONG(hlList;$hSousListe;$vlDépartement;$vlEmployé)
            ` Créer une nouvelle liste hiérarchique vide
         hlList:=Nouvelle liste
            ` Sélectionner tous les enregistrements de la table [Départements]
         TOUT SELECTIONNER([Départements])
            ` Pour chaque Département
         Boucle ($vlDepartement;1;Enregistrements trouves([Départements]))
               ` Sélectionner les employés de ce département
            LIEN RETOUR([Départements]Nom)
               ` Combien sont-ils?
            $vlNbEmployés:=Enregistrements trouves([Employés])
               ` Y a-t-il au moins un employé dans ce département?
            Si ($vlNbEmployés>0)
                  ` Créer une sous-liste pour l'élément Département
               $hSousListe:=Nouvelle liste
                  ` Pour chaque Employé
               Boucle ($vlEmployé;1;Enregistrements trouves([Employés]))
                     ` Ajouter l'élément Employé à la sous-liste 
                     ` Noter que le numéro de l'enregistrement [Employés]
                     ` est passé comme numéro de référence de l'élément
                  AJOUTER A LISTE($hSousListe;[Employés]Nom+", "+[Employés]Prénom;Numero enregistrement([Employés]))
                     ` Aller à l'enregistrement [Employés] suivant
                  ENREGISTREMENT SUIVANT([Employés])
               Fin de boucle
            Sinon 
                  ` Pas d'Employé, pas de sous-liste pour l'élément Département
               $hSousListe:=0
            Fin de si 

               ` Ajouter l'élément Département à la liste principale
               ` Notez que le numéro de l'enregistrement [Départements]
               ` est passé comme numéro de référence de l'élément. Le bit #31
               ` du numéro de référence de l'élément est forcé à 1. Ainsi nous pourrons faire
               ` la distinction entre les éléments Département et Employés (cf. note ci-dessous)
            AJOUTER A LISTE(hlList;[Départements]Nom;0x80000000 | Numero enregistrement([Départements]);$hSousListe;$hSousListe#0)
               ` Passer l'élément Département en gras pour renforcer la hiérarchie de la liste
            CHANGER PROPRIETES ELEMENT(hlList;0;Faux;Gras;0)
               ` Aller au département suivant
            ENREGISTREMENT SUIVANT([Départements])
         Fin de boucle 
            ` Trier toute la liste en ordre croissant    
         TRIER LISTE(hlList;>)
            ` Afficher la liste en style Windows et forcer la hauteur de ligne minimale à 14 Pts
         CHANGER PROPRIETES LISTE(hlList;A la Windows;Réf icône Windows;14)
    
      : (Evenement formulaire=Sur libération)
            ` La liste n'est plus utile. N'oubliez pas de l'effacer !
         SUPPRIMER LISTE(hlList;*)
    
      : (Evenement formulaire=Sur double clic)
            ` Il y a eu un double-clic
            ` Obtenir la position de l'élément sélectionné
         $vlÉlémentPos:=Elements selectionnes(hlList)
            ` A toutes fins utiles, vérifier la position
         Si ($vlÉlémentPos # 0)
               ` Obtenir l'information de l'élément de la liste     
            INFORMATION ELEMENT(hlList;$vlÉlémentPos;$vlÉlémentRef;$vsÉlémentText;$vlÉlémentSousListe;$vbÉlémentDéployé)
               ` Cet élément est-il l'élément d'un Département?
            Si ($vlÉlémentRef ?? 31)
                  ` Si oui, c'est un double-clic sur un élément Département
               ALERTE("Vous avez double-cliqué sur l'élément Département "+Caractere(34)+$vsÉlémentText+Caractere(34)+".")
            Sinon 
                  ` Sinon, c'est un double-clic sur un élément Employé. Avec le numéro de référence
                  ` de l'élément parent, trouver l'enregistrement [Départements]
               ALLER A ENREGISTREMENT([Départements];Element parent(hlList;$vlÉlémentRef)?-31)
                  ` Signaler où l'Employé travaille et de qui il dépend
               ALERTE("Vous avez double-cliqué sur l'élément Employé "+Caractere(34)+$vsÉlémentText+Caractere(34)+" qui travaille dans le Département "+Caractere(34)+[Départements]Nom+Caractere(34)+ " dont le responsable est "+Caractere(34)+[Départements]Responsable+Caractere(34)+".")
            Fin de si 
         Fin de si 
   
   Fin de cas 

      ` Note : 4D peut stocker jusqu'à 1 milliard d'enregistrements par table. Le numéro d'enregistrement
      ` tient sur 24 bits. Dans notre exemple, nous utilisons le bit #31 de l'octet supérieur inutilisé
      ` pour différencier les éléments des Employés des Départements.

Dans cet exemple, il y a une seule raison d'établir une distinction entre les éléments Départements et les éléments Employés :

1. Nous stockons les numéros d'enregistrements dans les numéros de référence des éléments. En conséquence, nous avons toutes les chances de rencontrer des éléments Départements dont les numéros de référence sont les mêmes que ceux des éléments Employés.

2. Nous utilisons la commande Element parent pour récupérer le parent de l'élément sélectionné. Si nous cliquons sur un élément Employés dont le numéro d'enregistrement associé est 10, et s'il existe aussi un élément Départements qui a le numéro 10, l'élément Départements sera trouvé en premier par Element parent quand cette fonction passera la liste en revue pour repérer l'élément avec le numéro de référence que nous passons. La commande retournera le parent de l'élément Départements et non celui de l'élément Employés.

C'est pourquoi nous avons choisi des numéros de référence d'éléments uniques, non pas pour des questions de principe, mais parce que nous devions différencier les éléments de Départements et d'Employés.

Dans le formulaire en exécution, la liste apparaîtra ainsi :

Note : Cet exemple est utile dans le cadre de la gestion de l'interface utilisateur, si vous manipulez un nombre limité d'enregistrements. Souvenez-vous que les listes sont conservées en mémoire ; donc, ne construisez pas d'interfaces utilisateur exploitant des listes hiérarchiques comportant des millions d'éléments.

Référence

CHANGER ELEMENT, CHANGER PROPRIETES ELEMENT, INSERER DANS LISTE.


4D - Documentation   Français   English   German   Español   Japanese   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant