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 Zone Répétée
  • Présentation
  • Paramétrage du champ Table ou Zone répétée
  • Mise en place
  • Evénements ajoutés
  • Limitations
  • Personnalisation de la fenêtre ou page de patience
  • Evénements "Ajout d'éléments supplémentaires"
  • Remplissage par le haut et/ou par le bas
  • Programmation
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
Un champ Table et/ou Zone répétée par programmation peut être rempli selon deux méthodes :
  • Remplissage du champ dans sa totalité : Toutes les données présentes dans le champ sont chargées à l'initialisation du champ.
    Avantage : Toutes les valeurs sont présentes dans le champ. Il est possible de faire des recherches ou des tris sur les éléments contenus dans le champ.
    Inconvénient : L'occupation mémoire du champ et de ses données peut être important. Dans le cas des applications mobiles, le chargement complet peut consommer inutilement de la bande passante et ralentir l'affichage.
  • Remplissage si nécessaire (Table et Zone répétée infinie) : Seules les données visibles par l'utilisateur sont chargées en mémoire. Les données supplémentaires sont chargées à la demande (par exemple en cas d'utilisation de l'ascenseur).
    Avantage : Occupation mémoire faible. Dans le cas des applications mobiles, accélération de la vitesse d'affichage et limitation de la consommation de bande passante.
    Inconvénient : Pas de tris ni de recherches tant que toutes les données ne sont pas disponibles.
Paramétrage du champ Table ou Zone répétée

Mise en place

Pour activer le mécanisme du remplissage si nécessaire (Table infinie/Zone répétée infinie) :
  1. Affichez la fenêtre de description du champ.
  2. Dans l'onglet "Contenu", dans la zone "Table infinie"/"Zone répétée infinie" :
    • Choisissez le mode de remplissage de la table infinie :
      • WINDEV Mobile "Remplissage par le bas" : Les données seront ajoutées automatiquement en dessous des données existantes.
      • Nouveauté SaaS
        WINDEV Mobile "Remplissage par le haut" : Les données seront ajoutées automatiquement en haut du champ, au dessus des données existantes.
    • Sélectionnez la fenêtre interne de patience (ou la page interne de patience) affichée lors du chargement des lignes supplémentaires. Il est possible de :
      • Utiliser la fenêtre/page interne de patience par défaut,
      • Utiliser la fenêtre/page pré-définie. Si cette option est sélectionnée, le composant interne WDFAA est immédiatement ajouté dans le projet en cours. Selon la plateforme, l'élément correspondant (fenêtre ou page) est automatiquement associé à l'option "Fenêtre interne de patience" ou "Page interne de patience".
        • WINDEV Mobile En WINDEV Mobile, la fenêtre interne s'appelle "FI_AjoutElementSuppl_WM".
        Remarque : Si le composant WDFAA existe déjà, seule la fenêtre interne (ou la page interne) est ajoutée au composant.
      • Utiliser une fenêtre/page interne de votre projet.
    • Indiquez le nombre de lignes maximum : Ce nombre correspond au nombre maximum de lignes pouvant être ajoutées au champ. Lorsque ce nombre sera atteint, l'événement "Ajout d'éléments supplémentaires" ne sera plus appelé.
  3. Validez la fenêtre de description du champ.

Evénements ajoutés

Le paramétrage du champ Table ou Zone répétée infinie a ajouté :
  • WINDEV Mobile En WINDEV et WINDEV Mobile :
    • l'événement "Ajout d'éléments supplémentaires (par le bas)" dans les événements du champ.
    • Nouveauté SaaS
      l'événement "Ajout d'éléments supplémentaires (par le haut)" dans les événements du champ.

Limitations

Il n'est pas possible de définir un remplissage infini pour :
  • les champs Zone répétée horizontale, Zone répétée fichier et Zone répétée multicolonne.
  • les champs Table fichier.

Personnalisation de la fenêtre ou page de patience

La jauge affichée pendant le chargement est contenue dans une fenêtre interne ou une page interne.
WINDEV Mobile Par défaut, une fenêtre interne standard est utilisée, mais elle peut être intégrée au projet pour personnalisation. La gestion de la jauge est automatique. La fenêtre interne utilisée doit juste contenir un champ Jauge infini.
Evénements "Ajout d'éléments supplémentaires"
L'événement "Ajout d'éléments supplémentaires" doit contenir le code de mise à jour des données dans le champ. Par défaut, la fenêtre interne de patience est affichée pendant l'exécution de ce code. A la fin de l'exécution de ce code, la fenêtre interne de patience sera automatiquement masquée.
Remarque : Cet événement est appelé automatiquement :
  • lors de l'initialisation de la fenêtre, si le champ est vide.
  • après l'initialisation de la fenêtre, si toutes les lignes du champ sont visibles
  • après l'agrandissement du champ, si toutes les lignes du champ sont visibles (alors qu'elles ne l'étaient pas avant l'agrandissement).
  • après un défilement vers le bas, si la dernière ligne du champ est visible.
Attention : Si la fenêtre interne par défaut est sélectionnée, une jauge (fenêtre de patience) est affichée pendant l'exécution de l'événement "Ajout d'éléments supplémentaires". Cette jauge sera affichée uniquement si le thread principal peut s'exécuter pendant l'exécution de l'événement "Ajout d'éléments supplémentaires".
Pour voir la jauge, il est nécessaire d'effectuer un traitement long de rafraîchissement (par exemple, requête HTTP ou parcours HFSQL) dans un thread exécuté depuis l'événement "Ajout d'éléments supplémentaires". Dans ce cas, il est nécessaire de gérer la jauge via les fonctions TableAjoutEnCours et ZoneRépétéeAjoutEnCours.
Exemple de code pour l'événement "Ajout d'éléments supplémentaires" : Compléter un champ Table avec les derniers emails non lus :
IdSession est un entier
EmailLu est un Email
 
// Charge les derniers messages non lus
EmailLitPremier(IdSession, EmailLu, emailNonLus)
TANTQUE PAS Email.EnDehors
// Traitement du message
TableAjouteLigne(TABLE_Email, EmailLu.Expediteur, EmailLu.DateRéception, EmailLu.MessageID)
EmailLitSuivant(IdSession, EmailLu, emailNonLus)
FIN
Remarque : Si l'événement "Ajout d'éléments supplémentaires" renvoie Faux :
  • la fenêtre interne de patience n'est plus affichée,
  • l'événement "Ajout d'éléments supplémentaires" n'est plus exécuté.
Nouveauté SaaS
WINDEV Mobile
Remplissage par le haut et/ou par le bas
Pour les champs Table et Zone répétée, il est possible de définir :
  • un remplissage par le bas. Dans ce cas, les lignes ou répétitions s'ajoutent à la fin du champ, via les fonctions suivantes :
    TableAjouteLigneAjoute une ligne dans :
    • un champ Table,
    • un champ Table hiérarchique.
    ZoneRépétéeAjouteFIAjoute une répétition sous forme d'une fenêtre interne à la fin d'un champ Zone répétée par programmation.
    ZoneRépétéeAjouteLigneAjoute une répétition à la fin d'un champ Zone répétée.
    La fenêtre de patience apparaît en bas du champ. Ce mode de remplissage était le seul mode disponible jusqu'à la version 2024.
  • un remplissage par le haut. Dans ce cas, les nouvelles lignes ou répétitions s'ajoutent AVANT les lignes existantes, via les fonctions suivantes :
    Nouveauté SaaS
    TableAjouteDébut
    Ajoute une ligne au début d'un champ Table infinie. La ligne est insérée avant la première ligne du champ Table. La position de défilement du champ Table n'est pas modifiée.
    Ajoute une répétition (ou ligne) au début d'un champ Zone répétée infinie. La répétition est insérée avant la première répétition du champ Zone répétée. La position de défilement du champ Zone répétée n'est pas modifiée.
    Ajoute une répétition (ou une ligne) constituée par une fenêtre interne en première répétition d'un champ Zone Répétée infinie. La répétition est insérée avant la première répétition du champ Zone répétée. La position de défilement du champ Zone répétée n'est pas modifiée.
    Ces fonctions ne modifient pas la position du défilement. La fenêtre de patience apparaît en haut du champ.
Pour différencier les modes de remplissage, il existe deux événements WLangage :
  • Ajout d'éléments supplémentaires (par le haut). Cet événement est appelé lorsque l'utilisateur scrolle vers le haut.
  • Ajout d'éléments supplémentaires (par le bas). Cet événement est appelé lorsque l'utilisateur scrolle vers le bas.
Il est également possible d'activer le remplissage par le haut ET par le bas. Dans ce cas :
  • Il est possible d'afficher la fenêtre de patience en haut et en bas en même temps. Dans les deux cas, la même fenêtre est utilisée.
  • Si la champ Table (ou Zone répétée) est vide, n'a pas d'ascenseur après sont ouverture ou après sont redimensionnement, l'événement "Ajout d'éléments supplémentaires (par le bas)" est exécuté.
Remarque : Les fonctions TableAjoutEnCours et ZoneRépétéeAjoutEnCours prennent en compte le mode de remplissage et permettent de gérer aussi bien la fenêtre de patience affichée en haut du champ que celle affichée en bas.
WINDEV Mobile Attention : le remplissage par le haut n'est pas disponible si le "Pull-to-refresh" est activé (et inversement).
Programmation
WINDEV Mobile Les fonctions permettant de gérer les tables et zones répétées infinies sont les suivantes :
Nouveauté SaaS
TableAjouteDébut
Ajoute une ligne au début d'un champ Table infinie. La ligne est insérée avant la première ligne du champ Table. La position de défilement du champ Table n'est pas modifiée.
TableAjoutEnCoursModifie ou renvoie l'état de visibilité de la fenêtre interne de patience lors de l'ajout d'éléments supplémentaires dans un champ Table infinie.
Ajoute une répétition (ou ligne) au début d'un champ Zone répétée infinie. La répétition est insérée avant la première répétition du champ Zone répétée. La position de défilement du champ Zone répétée n'est pas modifiée.
Ajoute une répétition (ou une ligne) constituée par une fenêtre interne en première répétition d'un champ Zone Répétée infinie. La répétition est insérée avant la première répétition du champ Zone répétée. La position de défilement du champ Zone répétée n'est pas modifiée.
ZoneRépétéeAjoutEnCoursModifie ou renvoie l'état de visibilité de la fenêtre interne de patience lors de l'ajout d'éléments supplémentaires dans un champ Zone répétée infinie.
Version minimum requise
  • Version 21
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 26/06/2024

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