DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Développer une application ou un site / Champs, fenêtres et pages / Champs : Types disponibles / Champ Table Hiérarchique
  • Présentation
  • Initialisation d'un champ Table hiérarchique
  • Ajout ou modification de lignes dans un champ Table hiérarchique
  • Ajout de lignes dans un champ Table hiérarchique
  • Modification d'une ligne ou d'une colonne
  • Reprendre la saisie dans une colonne
  • Ajout ou suppression d'une colonne
  • Gestion des colonnes calculées
  • Opérations sur les lignes et les cellules
  • Suppression d'une ligne
  • Sélection d'une ligne
  • Récupération d'une ligne ou d'une cellule
  • Valeur d'une cellule de la ligne en cours
  • Valeur d'une cellule pour une ligne spécifique
  • Contenu de la ligne en cours
  • Contenu d'une ligne spécifique
  • Opérations sur l'arborescence
  • Enrouler tous les noeuds d'un champ Table hiérarchique
  • Dérouler tous les noeuds d'un champ Table hiérarchique
  • Connaître le numéro de la ligne enroulée/déroulée
  • Définir le prochain état de la ligne ajoutée
  • Connaître et modifier les images des lignes
  • Colonne hiérarchique de type Interrupteur
  • Connaître le parent ou les fils d'un élément
  • Propriétés spécifiques aux champs Table hiérarchique
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Présentation
Voici les principaux points de la programmation des champs Table hiérarchique. Le WLangage met à votre disposition de nombreuses fonctions permettant de gérer par programmation les champs Table hiérarchique.
N'hésitez pas à consulter la documentation de ces fonctions. Pour plus de détails, consultez la liste des fonctions de gestion des champs Table hiérarchique.
Initialisation d'un champ Table hiérarchique
Pour remplir par programmation un champ Table hiérarchique, il est possible d'utiliser les fonctions suivantes :
Si une nouvelle ligne a été ajoutée dans un champ Table hiérarchique avec la fonction TableAjoute, TableInsere, TableAjouteLigne, TableAjouteFils, TableInsèreLigne ou TableInsèreFils, la propriété Nouveau est à Vrai (sinon elle est à Faux).
WINDEV Remarque : Pour optimiser le remplissage d'un champ Table hiérarchique, il est possible d'utiliser la propriété AjouteFilsDifféré sur les lignes du champ Table hiérarchique.
Dans ce cas, le principe du remplissage est simplifié :
  • A l'initialisation du champ, seul les éléments du premier niveau sont chargés. Chaque élément est associé à la propriété AjouteFilsDifféré.
  • Lorsque l'utilisateur clique sur l'élément de premier niveau pour le dérouler, la procédure définie par la propriété AjouteFilsDifféré est exécutée. Cette procédure effectue le remplissage du niveau à dérouler. La recherche des fils n'est effectuée que lorsque l'utilisateur demande à les voir.
Ajout ou modification de lignes dans un champ Table hiérarchique

Ajout de lignes dans un champ Table hiérarchique

La création d'une ligne dans un champ Table hiérarchique n'est pas automatique. Elle doit être demandée explicitement par un appel aux fonctions :
WINDEV Remarque : Si l'option "Saisie en cascade" n'est pas sélectionnée :
  • Le champ Table hiérarchique ne comporte aucune ligne à sa création. Dans ce cas, aucune saisie n'est possible. La propriété Vide est à Vrai.
  • Pour insérer automatiquement une ligne dans un champ Table hiérarchique vide, utilisez la fonction TableAjoute ou TableAjouteLigne.

Modification d'une ligne ou d'une colonne

Le contenu des lignes et des colonnes d'un champ Table hiérarchique peut être modifié :
  • par l'utilisateur, en saisissant directement dans les colonnes. Les modifications sont mémorisées automatiquement dans le champ Table hiérarchique, sans programmation complémentaire. La propriété Modifié est à Vrai.
  • par programmation :
    • avec la fonction TableModifie ou la fonction TableModifieLigne pour modifier le contenu de la ligne en cours ou d'une ligne donnée.
      Par exemple :
      TableModifie(TABLEH_CLIENT, "PY" + TAB + "Jean" + TAB + "Nîmes")

      Remarque : Il est également possible d'utiliser directement le nom du champ Table hiérarchique :
      // Modifier la ligne en cours
      TABLEH_CLIENT = "DURAND" + TAB + "Sophie" + TAB + "Nîmes"
      // Modifier la colonne COL_JOUR de la ligne 3
      TableModifie(COL_JOUR, "Mercredi"+ TAB + "Vaqué", 3)
    • directement en donnant le nom de la colonne (comme pour un champ de saisie) pour modifier le contenu de la colonne. Pour modifier une colonne d'une ligne précise, il faut indiquer le numéro de la ligne (indice).
      Par exemple :
      COL_NOM[Indice] = NomClient

      Pour modifier une colonne de la ligne en cours, il n'est pas nécessaire de préciser l'indice.
      Par exemple :
      COL_NOM = NomClient

      La propriété Modifié est à Faux (elle est mise à Vrai uniquement par une saisie dans le champ Table hiérarchique).
WINDEV

Reprendre la saisie dans une colonne

La fonction DonneFocusEtRetourUtilisateur peut être utilisée pour se replacer en saisie sur une colonne, de la ligne en cours. Par exemple :
// Evénement "Entrée dans" de COL_QTE
// COL_QTE ne peut pas Ãªtre saisi si COL_PRODUIT n'est pas saisi
SI SansEspace(COL_PRODUIT) = "" ALORS
Erreur("La colonne Produit doit Ãªtre saisie en premier")
DonneFocusEtRetourUtilisateur(COL_PRODUIT)
FIN
WINDEV

Ajout ou suppression d'une colonne

Il est possible de :
  • ajouter une colonne dans un champ Table hiérarchique grâce à la fonction ChampClone.
  • supprimer une colonne dans un champ Table hiérarchique grâce à la fonction ChampSupprime.

Gestion des colonnes calculées

La formule de calcul d'une colonne calculée doit être décrite dans l'événement "Affichage d'une ligne" du champ Table. Par exemple :
// COL_PHT : colonne calculée
// COL_PUHT et COL_QTE : colonnes liées à des zones mémoire
COL_PHT = COL_PUHT * COL_QTE
Opérations sur les lignes et les cellules

Suppression d'une ligne

La suppression d'une ligne doit être demandée explicitement à l'aide des fonctions TableSupprime et TableSupprimeFils.
  • La syntaxe utilisée pour la fonction TableSupprime est :
    TableSupprime(Champ Table hiérarchique>[, <Indice>])

    Si l'indice est précisé, la fonction TableSupprime supprime la ligne correspondant à l'indice. Sinon, elle supprime la ligne en cours.
    La suppression d'une ligne du champ Table hiérarchique supprime toutes les valeurs des colonnes pour cette ligne.
  • La syntaxe utilisée pour la fonction TableSupprimeFils est :
    TableSupprimeFils(<Champ Table hiérarchique>, <Indice de l'élément parent>)

    Tous les éléments fils de la ligne désignée par l'indice seront supprimés.

Sélection d'une ligne

La sélection d'une ligne s'effectue avec la fonction TableSelectPlus.
La syntaxe utilisée est :
TableSelectPlus(<Champ Table hiérarchique>[, <Indice>])

Récupération d'une ligne ou d'une cellule

Le contenu d'un champ Table hiérarchique peut être récupéré :
  • soit la ligne entière.
  • soit cellule par cellule.

Valeur d'une cellule de la ligne en cours

Pour récupérer la valeur d'une colonne (ou cellule) de la ligne en cours, la syntaxe est la même que pour un champ de saisie simple :
<Valeur> = <Nom_Colonne>
Par exemple :
// COL_QTE est une colonne d'un champ Table hiérarchique
SI COL_QTE < 10 ALORS
Info("Quantité insuffisante")
FIN

Valeur d'une cellule pour une ligne spécifique

Pour récupérer la valeur d'une colonne qui n'est pas sur la ligne en cours, il faut passer l'indice de la ligne :
<Valeur> = <Nom Colonne>[<Indice>]
Par exemple :
// Totaliser le Prix PHT pour toutes les lignes de commande
PrixTotal = 0
POUR Indice = 1 À TABLEH_COMMANDE.Occurrence
PrixTotal = PrixTotal + COL_PHT[Indice]
FIN

Contenu de la ligne en cours

Pour récupérer le contenu de la ligne en cours :
<Valeur> = <Champ Table hiérarchique>

Contenu d'une ligne spécifique

Pour récupérer le contenu de la ligne d'indice <Indice> :
<Valeur> = <Champ Table hiérarchique>[<Indice>]

Remarque : l'indice de la ligne en cours peut être connu par la fonction TableSelect. Par exemple :
// Récupérer le contenu de la ligne 10 du champ Table hiérarchique TABLEH_CLIENT
LigneEnCours = TABLEH_CLIENT[10]
// Nom du client sélectionné
NomClient = COL_NOM[TableSelect(TABLEH_CLIENT)]
// Récupérer le contenu de la ligne en cours du champ Table hiérarchique TABLEH_CLIENT
LigneEnCours = TABLEH_CLIENT
Opérations sur l'arborescence

Enrouler tous les noeuds d'un champ Table hiérarchique

Pour enrouler tous les noeuds de l'arbre d'un champ Table hiérarchique, utilisez la fonction TableEnrouleTout. La syntaxe utilisée est :
TableEnrouleTout(<Champ Table hiérarchique>)

Dérouler tous les noeuds d'un champ Table hiérarchique

Pour dérouler tous les noeuds de l'arbre d'un champ Table hiérarchique, utilisez la fonction TableDérouleTout. La syntaxe utilisée est :
TableDérouleTout(<Champ Table hiérarchique>)
WINDEV Remarque : Si le champ Table hiérarchique utilise le remplissage différé des sous-niveaux via la propriété AjouteFilsDifféré, la procédure de remplissage des sous-niveaux sera exécutée pour chaque nouvel élément déroulé.

Connaître le numéro de la ligne enroulée/déroulée

Pour connaître le numéro de la ligne qui est enroulée ou déroulée, il suffit d'utiliser le code "Enroulé, déroulé" d'un noeud du champ Table hiérarchique :
// Quelle est la ligne manipulée ?
Info(TABLEH_TableHiérarchique[TABLEH_TableHiérarchique])

Définir le prochain état de la ligne ajoutée

Il est possible de définir pour un champ Table hiérarchique l'état de la prochaine ligne qui sera ajoutée, à savoir enroulée ou déroulée. Pour cela, utilisez la propriété Enroulé.
// Les prochaines lignes ajoutées seront automatiquement enroulées
TABLEH_TableHiérarchique.Enroulé = Vrai

Connaître et modifier les images des lignes

Pour connaître et modifier les images des lignes d'un champ Table hiérarchique, utilisez les propriétés :
// Modifier les images des lignes du champ Table hiérarchique
TABLEH_TableHiérarchique.ImageDéroulée = "DossierOuvert.gif"
TABLEH_TableHiérarchique.ImageEnroulée = "DossierFermé.gif"
WINDEV

Colonne hiérarchique de type Interrupteur

Il est possible de définir dans un champ Table hiérarchique une colonne de type Interrupteur comme "Colonne hiérarchique". Dans ce cas, la colonne interrupteur permet de gérer la hiérarchie.
La propriété Libellé de la ligne permet de connaître et modifier le libellé présent à côté de l'interrupteur. La propriété Valeur de la ligne permet de connaître et de modifier la valeur de l'interrupteur.

Connaître le parent ou les fils d'un élément

Il est possible de connaître le parent ou les fils d'un élément grâce aux fonctions suivantes :
  • TableRécupèreParent : Renvoie le "parent" d'un élément, c'est-à-dire l'élément de niveau immédiatement supérieur.
  • TableRécupèreFils : Renvoie les fils d'un élément, c'est-à-dire les éléments de niveau immédiatement inférieur.
Propriétés spécifiques aux champs Table hiérarchique
Les propriétés suivantes sont spécifiques à la gestion des caractéristiques d'un champ Table hiérarchique par programmation.
AjouteFilsDifféréPermet de définir la procédure qui sera appelée pour un remplissage différé d'une branche.
EnrouléPermet de connaître et définir l'état (enroulé ou déroulé) qui sera utilisé lors des prochains ajouts de lignes dans un champ Table hiérarchique.
FusionPermet de savoir si les cellules d'un champ Table hiérarchique (ou les titres de colonnes) sont fusionnées et permet de fusionner les cellules d'un champ Table hiérarchique (ou les titres de colonnes).
ImageDérouléePermet de connaître et de modifier l'image par défaut d'une ligne déroulée dans un champ Table hiérarchique.
ImageEnrouléePermet de connaître et de modifier l'image par défaut d'une ligne enroulée dans un champ Table hiérarchique.
MultisélectionPermet de connaître et de modifier le mode de sélection d'un champ Table hiérarchique.
NbFilsTotalRenvoie le nombre total de fils d'une branche d'un champ Table hiérarchique.
OptionTriPermet de connaître et de modifier les options de tri définies pour une colonne d'un champ Table hiérarchique.
RetraitGauchePermet de connaître ou modifier l'espace laissé à gauche du texte dans les colonnes d'un champ Table hiérarchique.
RubriqueParcouruePermet de connaître et de modifier la rubrique utilisée pour le parcours automatique des champs Table hiérarchique.
TaillePermet de connaître et de modifier le nombre de colonnes d'un champ Table hiérarchique.
TotauxActifPermet de connaître le mode de fonctionnement des calculs automatiques pour un champ Table hiérarchique et d'interdire ou de forcer les calculs automatiques dans un champ Table hiérarchique.

Pour connaître la liste complète des propriétés du WLangage pouvant être utilisées :
Version minimum requise
  • Version 11
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 30/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale