DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Champs, pages et fenêtres / Fonctions de gestion des champs
  • Appartenance des champs
  • Utilisation des champs récupérés
  • Cas des champs Onglet avec volets dynamiques
  • Enumérer les sous-éléments
  • Erreur du WLangage
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
Renvoie le nom du Nème champ de l'élément considéré. Cet élément doit être affiché.
Utilisée dans une boucle, cette fonction peut permettre d'énumérer les champs de l'élément considéré.
WINDEV L'élément considéré peut être une fenêtre, un état, un groupe de champs, un champ Onglet, un champ Zone répétée ou un superchamp. Les champs Barre d'outils et Boîte à outils ne sont pas gérés.
Exemple
WINDEVUniversal Windows 10 AppJavaCode Utilisateur (MCU)
// Nom du champ 7 de la fenêtre "FEN_FenêtreSaisie"
ResChamp = EnumèreChamp(FEN_FenêtreSaisie, 7)
WINDEVJavaCode Utilisateur (MCU)
// Remplir un champ Combo avec la liste des champs de la fenêtre
i est un entier = 1
ResChamp est une chaîne
ResChamp = EnumèreChamp(FEN_FenêtreSaisie, i)
TANTQUE ResChamp <> ""
i++
ListeAjoute(COMBO_ListeChamp, ResChamp)
ResChamp = EnumèreChamp(FEN_FenêtreSaisie, i)
FIN
Syntaxe
<Résultat> = EnumèreChamp(<Objet "parent"> , <Numéro du champ> [, <Type de l'énumération>])
<Résultat> : Chaîne de caractères
  • Nom du champ trouvé,
  • Chaîne vide ("") si aucun champ n'a été trouvé.
<Objet "parent"> : Chaîne de caractères
Nom de l'objet "parent" (contenant le champ). Ce paramètre correspond au nom d'une fenêtre, d'un champ Zone répétée, d'une rupture d'un champ Zone répétée, d'un groupe, d'un champ Onglet, d'un superchamp ou d'un état.
Si l'objet "parent" est un champ Onglet, la notation suivante doit être utilisée : <Nom du champ Onglet>[<Numéro du volet d'onglet>]. Par exemple : ONG_Onglet1[2].
<Numéro du champ> : Entier
Numéro du champ dont le nom est recherché. Chaque champ est associé à un numéro. Ce numéro correspond :
  • soit à l'ordre de création des champs (par défaut) si le type d'énumération est effectué avec la constante parOrdreDeCréation
  • soit à l'ordre de navigation (c'est-à-dire l'ordre de prise de focus des champs dans l'objet "parent") si le type d'énumération est effectué avec la constante parOrdreDeTabulation.
    La touche F5 permet de visualiser l'ordre de navigation sous l'éditeur de fenêtres / de pages.
<Type de l'énumération> : Constante optionnelle de type Entier
Ordre dans lequel l'énumération est réalisée :
parAltitudeÉnumération effectuée selon l'altitude des champs, du plus bas au plus haut.
parOrdreDeCréation
(Valeur par défaut)
Énumération effectuée selon l'ordre de création des champs (sous l'éditeur ou avec la fonction ChampClone).
parOrdreDeTabulationÉnumération effectuée selon l'ordre de navigation avec la touche de tabulation (Tab). Les champs qui ne sont pas accessibles par la touche de tabulation (Tab) sont listés à la fin.

Remarques

Appartenance des champs

Seuls les champs appartenant directement à l'objet "parent" spécifié sont énumérés.
Par exemple, si le paramètre <Objet "parent"> correspond au nom d'une fenêtre (ou d'une page), la fonction EnumèreChamp fonctionne uniquement pour les champs appartenant directement à cette fenêtre (à cette page). La fonction EnumèreChamp ne permet pas de récupérer les noms des champs appartenant aux champs Onglet ou aux superchamps de cette fenêtre (de cette page).

Utilisation des champs récupérés

Lorsque le nom d'un champ obtenu par la fonction EnumèreChamp est contenu dans une variable, le champ lui-même peut être utilisé grâce aux opérateurs d'indirection (les accolades { et }). Exemple :
// Nom du champ 7 de la page
NomChamp est une chaîne = EnumèreChamp(MaPage, 7)
// Libellé du champ
ToastAffiche({NomChamp}..Libellé)
WINDEV

Cas des champs Onglet avec volets dynamiques

Si le paramètre <Objet "parent"> correspond au nom d'un champ Onglet avec des volets dynamiques, les alias des volets dynamiques sont énumérés.

Enumérer les sous-éléments

La fonction EnumèreChamp, utilisée dans une boucle, permet de lister les champs d'une fenêtre.
Toutefois, cette fonction ne descend pas dans l'arborescence des champs : par exemple, elle ne liste pas les champs contenus dans les volets d'un champ Onglet d'une fenêtre. Pour descendre dans l'arborescence des champs, il est possible d'utiliser la fonction EnumèreSousElement, en complément :
j est entier = 1
ResChamp est chaîne
ResChamp = EnumèreChamp(MaFenêtre.Nom, j)

TANTQUE ResChamp <> ""
	j++
	Trace(ResChamp)
	ListeElément(MaFenêtre.Nom + "." + ResChamp)
	ResChamp = EnumèreChamp(MaFenêtre.Nom, j)
FIN

PROCÉDURE INTERNE ListeElément (NomElt)
	i est entier = 1
	sReschampSousElt est chaîne
	sReschampSousElt = EnumèreSousElément(NomElt, i)
	TANTQUE sReschampSousElt <> ""
		i++
		Trace(NomElt+"."+sReschampSousElt)
		ListeElément(NomElt +"."+ sReschampSousElt)
		sReschampSousElt = EnumèreSousElément(NomElt, i)
	FIN
FIN

Erreur du WLangage

Une erreur du WLangage est générée si :
  • Le paramètre <Numéro du champ> est négatif.
  • Le paramètre <Numéro du champ> est plus grand que le nombre de champs contenu dans l'<Objet "parent"> +1. Cela permet d'éviter les boucles sans fin.
  • L'<Objet "parent"> n'est ni une fenêtre, ni une page, ni un état, ni un groupe, ni un champ Onglet, ni un superchamp.
Composante : wd300vm.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Enumération Champs de l'onglet actif
<BLOC Recherche de l'onglet Actif>
LOCAL
NomChampOnglet est une chaîne = FEN_TEST_001.Onglet1..NomComplet
IndiceOnglet est une chaîne = EnumèreSousElément(NomChampOnglet,enumPremier+enumVolet)

TANTQUE IndiceOnglet <> ""
SI {NomChampOnglet} = IndiceOnglet ALORS

<BLOC Enumération Champ de l'onglet Actif>
IndiceChamp est un entier = 1
NomChamp est une chaîne = EnumèreChamp({NomChampOnglet+"["+IndiceOnglet+"]"}, IndiceChamp)
TANTQUE NomChamp <> ""
Trace(NomChamp)
IndiceChamp++
NomChamp = EnumèreChamp({NomChampOnglet+"["+IndiceOnglet+"]"}, IndiceChamp)
FIN
<FIN>

FIN
IndiceOnglet = EnumèreSousElément(NomChampOnglet,enumVolet)
FIN
<FIN>
Baptiste - BLV TECH
25 juil. 2022
Enumération d'un onglet statique ou dynamique
Pour énumérer le contenu d'un onglet statique : le nom de l'objet "parent" doit être le nom de l'onglet + "[x]" où x est l'indice de l'onglet.

Pour énumérer le contenu d'un onglet dynamique : le nom de l'objet "parent" doit être le nom de l'onglet + ".X" ou X est l'énumération de l'onglet avec son indice en paramètre.

L'indice maximum d'un onglet se récupère au choix avec Champ_Onglet..Occurrence ou Occurrence(Champ_Onglet) ou Champ_Onglet.Occurrence()
Patrick ALLÉMOZ
09 déc. 2021
Attributs de zone répétée
A noter:
Lorsque l'on parcourt une zone répétée, les attributs ne sont pas listés avec la fonction EnumèreChamp.
A la différence de la fonction gpwEnumèreChamp.
Emmanuel LANGUEBIEN
05 juil. 2019
Précision avec type de l'énumération
Si un type est précisé, il faut le préciser à chaque énumération et non pas seulement au début.

// Remplir une combo avec la liste des champs de la page dans l'ordre de tabulation
i est un entier = 1
ResChamp est une chaîne
ResChamp = EnumèreChamp(PAGE_MaPage, i, parOrdreDeTabulation)
TANTQUE ResChamp <> ""
i++
ListeAjoute(LISTE_ListeChamp, ResChamp)
ResChamp = EnumèreChamp(PAGE_MaPage, i, parOrdreDeTabulation)
FIN
Emmanuel LANGUEBIEN
10 juin 2014

Dernière modification : 17/05/2024

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