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
  • Comment le faire ?
  • Intégrer un champ Table dans un champ Zone répétée
  • Intégrer un champ dans un champ Zone répétée
  • Accéder au contenu des champs de la fenêtre interne depuis la fenêtre hôte
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
Dans un champ Zone répétée, il est possible d'affecter un contenu différent aux champs Table, Graphe, Liste et Arbre :
  • Si le champ à répéter est un champ Table ou Graphe, il suffit de l'insérer directement dans le champ Zone répétée.
  • Si le champ à répéter est un autre type de champ (champ Liste, Arbre, ...), il suffit d'insérer ce champ dans une fenêtre interne. Dans le champ Zone répétée, il suffira alors de créer le champ fenêtre interne associé.
Remarque : Les champs Table, Graphe ou les champs de la fenêtre interne doivent être alimentés par programmation.
Comment le faire ?

Intégrer un champ Table dans un champ Zone répétée

Pour intégrer un champ Table dans un champ Zone répétée :
  1. Créez si nécessaire un champ Zone répétée : champ Zone répétée fichier, par programmation ou sur variable.
  2. Insérez le champ Table dans le champ Zone répétée. Le champ Table doit être alimenté par programmation.
  3. Assurez-vous que l'option "Contenu identique pour toutes les lignes" soit décochée (onglet "UI" de la fenêtre de description du champ Table).
  4. Il est maintenant possible d'alimenter le champ Table par programmation.
Le champ Table présent dans le champ Zone répétée peut être rempli en utilisant la fonction TableAjouteLigne de la manière suivante :
TableAjouteLigne(<Nom du champ Zone répétée>[Indice de la répétition].<Nom du champ Table>,
<Elément colonne 1>, <Elément colonne 2>, ...)
Exemple : Le code suivant permet de remplir le contenu du champ Table présent dans le champ Zone répétée. Le champ Zone répétée liste les commandes et le champ Table liste les produits commandés.
Le code permettant de remplir à la fois le champ Zone répétée et le champ Table est le suivant :
PROCÉDURE RemplirCommandesDuJour()

// Variables locales
nIndice est un entier

// Vide le champ Zone répétée
ZoneRépétéeSupprimeTout(ZR_CommandesDuJour)

// Parcours des commandes du jour
POUR TOUT Commande AVEC "DateCommande = '" + DateDuJour() + "' AND EstFinalisée = 0"

	// Recherche le contact associé
	HLitRecherchePremier(ContactClient, IDContactClient, Commande.IDContactClient)
	SI HTrouve(ContactClient) = Faux ALORS CONTINUER

	// Ajoute une ligne dans le champ Zone répétée
	nIndice = ZoneRépétéeAjouteLigne(ZR_CommandesDuJour, Commande.IDCommande, ...
			ContactClient.Societe, ContactClient.Nom + ...
			[" "] + ContactClient.Prénom)

	// Parcours les lignes de commandes
	POUR TOUT LigneCde AVEC IDCommande = Commande.IDCommande
		HLitRecherchePremier(Produit, IDProduit, LigneCde.IDProduit)
		SI HTrouve(Produit) = Faux ALORS CONTINUER

		// Ajout des éléments commandés dans le champ Table
		TableAjouteLigne(ZR_CommandesDuJour[nIndice].TABLE_Commande, ...
			Produit.IDProduit, Produit.Libellé, LigneCde.Quantité)
	FIN
FIN
Pour avoir une syntaxe plus simple, il est possible d'effectuer le remplissage directement dans le code d'affichage d'une ligne du champ Zone répétée. Dans ce cas, il n'est pas nécessaire de préciser l'indice de la zone répétée principale. La syntaxe devient :
TableAjouteLigne(<Nom du champ Table>, <Elément colonne 1>, <Elément colonne 2>, ...)
Astuce : Dans le code d'affichage d'une ligne du champ Zone répétée, pensez à vider le champ Table avant de le remplir avec la fonction TableSupprimeTout.

Intégrer un champ dans un champ Zone répétée

Pour intégrer un autre champ (Liste, Arbre, etc.) dans le champ Zone répétée :
  1. Créez si nécessaire un champ Zone répétée : champ Zone répétée fichier, par programmation ou sur variable.
  2. Insérez un champ Fenêtre interne dans le champ Zone répétée.
  3. Assurez-vous que l'option "Contenu identique pour toutes les lignes" soit décochée (onglet "UI" de la description du champ Fenêtre interne).
  4. Créez si nécessaire une fenêtre interne. Insérez le champ (champ Graphe, Liste, Arbre, etc.) dans cette fenêtre interne. Le champ inséré doit être alimenté par programmation.
  5. Associez le champ Fenêtre interne à la fenêtre interne (onglet "Général" de la description du champ Fenêtre interne).
  6. Il est maintenant possible d'alimenter le champ par programmation.
Par exemple, il est possible d'utiliser la fonction ArbreAjoute de la manière suivante pour remplir un champ Arbre présent dans un champ Zone répétée :
ArbreAjoute(<Nom du champ Zone répétée>[Indice de la répétition].
<Nom de la fenêtre interne>.<Nom du champ Arbre>, <Elément à ajouter>)

Accéder au contenu des champs de la fenêtre interne depuis la fenêtre hôte

Pour accéder au contenu des champs de la fenêtre interne depuis la fenêtre hôte, il suffit de manipuler la répétition voulue, la fenêtre interne puis le champ.
Exemple : Récupérer la valeur d'un champ de saisie de type date de la première occurrence du champ Zone répétée :
x est Champ <- ZR_SansNom1[1]
Trace(x.FI_SansNom1.SAI_DATE)
Version minimum requise
  • Version 16
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 13/03/2024

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