Contrôle de type TreeView
Un contrôle de type TreeView permet de présenter sous forme d’une arborescence les données d’une table qui gère une hiérarchie entre ces enregistrements.
Ce contrôle graphique sera utilisé dans un contrôle graphique de type liste, mais peut aussi être utilisé seul.
Utilisation du mode design avec l’éditeur d’écran
Ajout d’un treeview dans une liste
Dans l’écran de propriété d’une liste, le bouton « Ajouter » propose dorénavant d’incorporer un contrôle de type treeview grâce à l’écran suivant.
Ecran de propriété
Variable
Variable ou champ contenant le nom du fichier image à afficher. Ce fichier doit être au format BMP. Si le dessin est fixe, on pourra indiquer le nom d’un fichier directement entre guillemets. Attention à bien indiquer le répertoire si ce n’est pas le répertoire par défaut des bitmaps indiqué dans les préférences de l’éditeur (menu « options »).
Code
Code qui permet d’agir sur le treeview par programme et qui sert pour la production d’événements (Code_ENTREE, Code_SORTIE, etc...). Si le treeview doit déclencher une méthode locale, elle devra avoir ce code comme nom.
Titre
Variable, champ ou formule contenant les informations à afficher pour chaque branche du treeview.
Largeur
Largeur du treeview dans la liste.
Table en lien
Table contenant les champs utilisés par le treeview Il ne peut s’agir que de la table liste.
Code de contexte
Définition d’un contexte de travail indépendant. L’utilisation des tables contexte permet d’éviter les effets de bord par rapport à l’utilisation de la table par d’autres contrôles. Il s’agit du contexte de la liste.
Champ Source / Champ de liaison
Codes des deux champs servant à gérer la hiérarchie de la table.
Champ Source : c’est le champ permettant d’identifier chaque enregistrement. Ce champ ne doit pas comporter de doublons.
Champ de liaison : C’est le champ qui permet d’identifier l’enregistrement auquel est liée l’enregistrement courant.
Remarque : Si un contexte est utilisé ces champs doivent être désignés avec les code du contexte.
Autorisé / Interdit Etat d’autorisation initial de la liste. Cocher Interdit pour interdire l’accès au treeview.Utilisation du treeview en mode exécution
L’utilisateur pourra cliquer sur le treeview pour plier ou déplier un branche, cette fonctionnalité sera possible en mode création, modification et visualisation et fonction de l’objet utilisé et des règles fonctionnelles implémentées.
Si la liste est modifiable l’utilisateur pourra, toujours en fonction des règles fonctionnelles implémentées, incrémenter ou décrémenter le niveau d’un enregistrement dans la hiérarchie grâce aux boutons « + » et « - » placés en haut du treeview.
Implémentation des règles fonctionnelles régissant un treeview
Méthodes disponibles
Pour permettre au développeur d’implémenter des fonctionnements différents en fonction des événements un certain nombre de méthodes sont à sa disposition.
[Code liste]_[Code treeview]_AFFECTE_IMAGE
Cet évènement est déclenché lors du réaffichage de la liste, il est appelé après l’appel à [Code liste]_SELECTION.
Il permet au développeur d’indiquer, en modifiant le contenu de la variable, l’image à afficher dans le treeview.
Si le contenu de cette variable est vide se sont les bitmap par défaut qui seront utilisées en fonction du niveau et de l’état de l’enregistrement courant (branche ou feuille).
[Code liste]_[Code treeview]_SELECTION
Cette méthode est appelée lors du chargement du treeview. Elle prend en paramètre un entier en référence, si il vaut 0 en retour le noeud sera plié dans le treeview.
Si on utilise l’instruction rejeter, l’enregistrement n’est pas pris en compte dans la structure du treeview et ne sera jamais affiché dans la liste.
Dans l’exemple suivant elle est utilisée pour présenter un treeview en mode visualisation en fonction des champs style et style2 de la table LES_LIGNES_COM.
Exemple :
Méthode LST_COM_IMAGE_COM_SELECTION
Parametres: Entier Reference reponse
Si ChargeEtatTreeview = 1 Alors
Si LES_LIGNES_COM.STYLE = 16 Et LES_LIGNES_COM.STYLE2 = COMPOSE Alors
reponse = 0
Sinon
reponse = 1
FinSi
FinSi
FinMethode
[Code liste]_[Code treeview]_INCREMENTE_NIVEAU
Cette méthode est appelée lorsque l’utilisateur clique sur le bouton « + » du treeview. Le développeur pourra implémenter dans cette méthode les contrôles et les traitements nécessaires à l’incrémentation d’un enregistrement dans la hiérarchie.
Elle est appelée avec deux paramètres :
-
Un Entier par Référence, s’il vaut 0 en retour l’incrémentation ne peut avoir lieu.
-
Une chaîne par valeur qui contient la valeur du nouveau champ de liaison après l’incrémentation.
[Code liste]_[Code treeview]_APRES_INCREMENTE_NIVEAU
Cette méthode est appelée après que l’incrémentation est été réalisée et que le champ de liaison soit mis à jour. Elle laisse la main au développeur pour implémenter des calculs.
[Code liste]_[Code treeview]_DECREMENTE_NIVEAU
Cette méthode est appelée lorsque l’utilisateur clique sur le bouton « - » du treeview. Le développeur pourra implémenter dans cette méthode les contrôles et les traitements nécessaires à la décrémentation d’un enregistrement dans la hiérarchie.
Elle est appelée avec trois paramètres :
-
Un Entier par Référence, s’il vaut 0 en retour la décrémentation ne peut avoir lieu.
-
Une chaîne par valeur qui contient la valeur du nouveau champ de liaison après la décrémentation.
-
Une chaîne par valeur qui contient la valeur du champ source pour le dernier enregistrement de la branche en cours de décrémentation. Cette information peut être nécessaire dans le cas ou l’utilisateur souhaite décrémenter une branche complète de l’arborescence.
[Code liste]_[Code treeview]_APRES_DECREMENTE_NIVEAU
Cette méthode est appelée après que la décrémentation est été réalisée et que le champ de liaison soit mis à jour. Elle laisse la main au développeur pour implémenter des calculs.
Gestion de l’affichage
Si une branche d’un treeview est pliée ses branches et ses feuilles ne seront pas affichées dans la liste. Cela signifie que l’état d’une branche intervient sur l’affichage de la liste.
Si le développeur rejette un enregistrement dans la méthode [Code liste]_SELECTION il ne sera pas non plus affiché dans la liste et dans le treeview.