ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / Developing an application or website / Controls, windows and pages / Controls: Available types / Looper control
  • 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 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Others
Stored procedures
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 :
      • WINDEVWINDEV Mobile "Populate at the bottom" : Les données seront ajoutées automatiquement en dessous des données existantes.
      • New in version SaaS
        WINDEVWINDEV Mobile "Populate at the top" : Les données seront ajoutées automatiquement en haut du champ, au dessus des données existantes.
      • WEBDEV - Server code "Call the process for adding elements when the user scrolls to the end" : le remplissage est effectué par le bas. Les données seront ajoutées automatiquement en dessous 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 En WINDEV, la fenêtre interne s'appelle "FI_AjoutElementSuppl_WD".
        • WINDEV Mobile En WINDEV Mobile, la fenêtre interne s'appelle "FI_AjoutElementSuppl_WM".
        • WEBDEV - Server code En WEBDEV, la page interne s'appelle "PI_AjoutElemSuppl".
        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é :
  • WINDEVWINDEV Mobile En WINDEV et WINDEV Mobile :
    • l'événement "Ajout d'éléments supplémentaires (par le bas)" dans les événements du champ.
    • New in version SaaS
      l'événement "Ajout d'éléments supplémentaires (par le haut)" dans les événements du champ.
  • WEBDEV - Server code En WEBDEV : les événements suivants dans les événements du champ :
    • Ajout d'éléments supplémentaires (navigateur).
    • Ajout d'éléments supplémentaires (serveur).
    • Retour AJAX après ajout d'éléments supplémentaires (navigateur).

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.
WINDEVWINDEV 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.
WEBDEV - Server code Par défaut, une page interne standard est utilisée, mais elle peut être intégrée au projet pour personnalisation. La gestion de la jauge est automatique.
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 is int
EmailLu is Email
 
// Charge les derniers messages non lus
EmailReadFirst(IdSession, EmailLu, emailUnread)
WHILE NOT Email.Out
	// Traitement du message
	TableAddLine(TABLE_Email, EmailLu.Sender, EmailLu.ReceiveDate, EmailLu.MessageID)
	EmailReadNext(IdSession, EmailLu, emailUnread)
END
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é.
WEBDEV - Server code Le fonctionnement est identique.
New in version SaaS
WINDEVWINDEV 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 :
    LooperAddIWAdds a row as an internal window at the end of a Looper control populated programmatically.
    LooperAddLineAdds a row at the end of a Looper control.
    TableAddLineAdds a row in:
    • a Table control,
    • a TreeView Table control.
    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 :
    New in version SaaS
    RepeatedZoneAddFIDBegin
    Adds a repeat (or line) consisting of an internal window to the first repeat of a field Infinite Repeat Zone. The repeat is inserted before the first repeat in the Repeated zone field.. The scroll position of the Repeated zone field remains unchanged.
    New in version SaaS
    RepeatedZoneAddStart
    Adds a repeat (or line) at the beginning of a field Infinite repeat zone. The repeat is inserted before the first repeat in the Repeated zone field.. The scroll position of the Repeated zone field remains unchanged.
    New in version SaaS
    TableAddBeginning
    Adds a row at the top of an Infinite Table control. The row is inserted before the first row of the Table control. The scroll position of the Table control doesn't change.
    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
WINDEVWINDEV Mobile Les fonctions permettant de gérer les tables et zones répétées infinies sont les suivantes :
LooperAddInProgressModifies or returns the visibility status of internal wait window when adding additional elements into an infinite Looper control.
New in version SaaS
RepeatedZoneAddFIDBegin
Adds a repeat (or line) consisting of an internal window to the first repeat of a field Infinite Repeat Zone. The repeat is inserted before the first repeat in the Repeated zone field.. The scroll position of the Repeated zone field remains unchanged.
New in version SaaS
RepeatedZoneAddStart
Adds a repeat (or line) at the beginning of a field Infinite repeat zone. The repeat is inserted before the first repeat in the Repeated zone field.. The scroll position of the Repeated zone field remains unchanged.
New in version SaaS
TableAddBeginning
Adds a row at the top of an Infinite Table control. The row is inserted before the first row of the Table control. The scroll position of the Table control doesn't change.
TableAddInProgressModifies or returns the visibility status of internal wait window when adding additional elements into an infinite Table control.
WEBDEV - Browser code Les fonctions permettant de gérer les tables et zones répétées infinies sont les suivantes :
LooperAddInProgressModifies or returns the visibility status of internal wait window when adding additional elements into an infinite Looper control.
TableAddInProgressModifies or returns the visibility status of internal wait window when adding additional elements into an infinite Table control.
Minimum version required
  • Version 21
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 06/26/2024

Send a report | Local help