DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Syntaxe WLangage / Déclaration des variables
  • Déclaration des énumérations
  • Passer une énumération en paramètre à une procédure
  • Cas particuliers
  • Extension d'énumération
  • Créer des alias dans une énumération
  • Valeurs associées
  • Propriétés associées
  • Fonctions WLangage disponibles
  • Limites
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
Une énumération est un ensemble de valeurs. Une variable ou un paramètre formel de type Enumération peut être affectée uniquement avec une valeur de l'énumération.
Exemple
// Code de déclaration
// Déclarer une énumération
TypeAutomate est une Enumération
Marche
Arrêté
EnMaintenance
EnPanne
FIN
// Déclaration d'une variable de type Enumération
Poste1 est un TypeAutomate
// Affectation de la variable
Poste1 = Marche
// Poste1 = 1 // Affiche une erreur de compilation
// Poste1 = "Marche" // Affiche une erreur de compilation
Syntaxe

Déclarer une énumération Masquer les détails

<Nom de l'énumération> est une Enumération
   <Valeurs de l'énumération>
FIN
<Nom de l'énumération> :
Nom de l'énumération à déclarer
<Valeurs de l'énumération> :
Différentes valeurs pouvant être prises par l'énumération.
<FIN> :
Fin de déclaration.

Déclarer une variable de type Enumération Masquer les détails

<Nom de la variable> est une <Nom de l'énumération>
<Nom de la variable> :
Nom de la variable de type Enumération à déclarer.
<Nom de l'énumération> :
Nom d'une énumération précédemment déclarée. La valeur par défaut de l'énumération correspond à la première valeur de l'énumération.
Remarques

Déclaration des énumérations

Une énumération doit être déclarée dans :
  • Le code d'initialisation du projet pour être utilisable dans tous les traitements du projet (codes du projet, codes des fenêtres, codes des champs, procédures, ...).
  • Le code de déclaration des globales d'une fenêtre pour être utilisable dans tous les traitements de la fenêtre (codes de la fenêtre, codes des champs présents dans la fenêtre, procédures locales, ...).
  • Le code d'ouverture d'un état pour être utilisable dans tous les traitements de l'état (codes de l'état, codes des champs présents dans l'état, procédures locales, ...).
  • Le code de déclaration de classe pour être utilisable dans la classe.
    • Pour accéder à cette énumération depuis une méthode de la classe, utilisez la syntaxe :
      "::<Nom de l'énumération>"
    • Pour accéder à cette énumération depuis un code extérieur à la classe, utilisez la syntaxe :
      "<Nom de la classe>::<Nom de l'énumération>"
  • Le code de déclaration des collections de procédures pour être utilisable dans toutes les procédures de la collection.
Remarque : Une énumération est toujours globale :
  • soit à un projet,
  • soit à une fenêtre,
  • soit à un état,
  • soit à une classe.

Passer une énumération en paramètre à une procédure

Une variable de type Enumération peut être passée en paramètre à une procédure. Pour cela, utilisez la syntaxe suivante :
<Nom de la procédure>(<Nom de la variable de type Enumération>)
Par exemple :
// Procédure avec un paramètre de type Enumération
PROCÉDURE Fonctionnement(p est TypeAutomate)

// Appels avec un paramètre de type Enumération
Fonctionnement(Marche)
Fonctionnement(1) // Affiche une erreur de compilation
Fonctionnement("A") // Affiche une erreur de compilation

Cas particuliers

  • Saisie assistée : La saisie assistée pour un paramètre de type énumération propose les différentes valeurs de l'énumération.
  • Ordre des valeurs : Les opérateurs <, <=, >, >= sont disponibles sur les énumérations ainsi que les opérations automatiques de tri (TableauTrie, TableauCherche, ...). L'ordre des valeurs dans l'énumération est celui de la déclaration des valeurs.
    Exemple :
    // Code de déclaration
    // Déclarer une énumération
    TypeAutomate est une Enumération
    Marche
    Arrêté
    EnMaintenance
    EnPanne
    FIN

    // Déclaration d'une variable de type Enumération
    Poste1 est un TypeAutomate
    // Affectation de la variable
    Poste1 = Marche

    ...

    SI Poste1>Arrêté ALORS
    Info("L'automate a actuellement un problème")
    FIN

Extension d'énumération

Une énumération peut étendre les valeurs d'une ou plusieurs autres énumérations en reprenant les valeurs de celles-ci et en y ajoutant de nouvelles valeurs.
La syntaxe utilisée est la suivante :
<Nom de l'énumération> est une Enumération
   [Enumération de base]
   <Valeurs supplémentaires de l'énumération>
FIN
où :
  • Nom de l'énumération : Nom d'une énumération précédemment déclarée.
  • Enumération de base : Nom de l'énumération de base à utiliser.
  • Valeurs supplémentaires de l'énumération : Valeurs supplémentaires à prendre en compte dans l'énumération.
Exemple :
// Code de déclaration
// Déclarer une énumération
TypeAutomate est une Enumération
Marche
Arrêté
EnMaintenance
EnPanne
FIN

TypeAutomateAvancé est une Enumération
[TypeAutomate]
EnBoucle
FIN
L'affectation d'une valeur étendue dans une énumération de base est interdite.

Créer des alias dans une énumération

Il est possible de déclarer des alias pour assurer une compatibilité temporaire par exemple.
La syntaxe utilisée est la suivante :
<Nom de l'énumération> est une Enumération
<Valeur 1 de l'énumération>
<Valeur 2 de l'énumération>
<Valeur 3 de l'énumération> = <Valeur 1 de l'énumération>
FIN
Exemple :
// Code de déclaration
// Déclarer une énumération
TypeAutomate est une Enumération
Marche
Arrêté
EnMaintenance
EnPanne
// Déclaration des alias temporaires
Maintenance = EnMaintenance
Panne = EnPanne
FIN

Valeurs associées

En WLangage, il est possible d'associer une valeur constante de type simple à chaque valeur d'une énumération. Cette valeur est associée à la valeur de l'énumération dans la déclaration de l'énumération.
// Déclaration de l'énumération avec valeurs associées
TypeAutomate est une Enumération
Marche = "Exécution de l'automate"
Arrêté = "Automate arrêté"
EnMaintenance = "Automate en cours de maintenance"
EnPanne = "Automate en panne"
FIN
Il est ensuite possible de lire la valeur associée d'une variable de type Enumération grâce à la propriété Valeur.
// Accès à la valeur associée
e est un TypeAutomate
MessageAutomate est une chaîne = e..Valeur
La valeur associée n'a aucune incidence sur les autres comportements des énumérations. En particulier l'ordre de tri reste celui de déclaration des valeurs dans l'énumération.

Propriétés associées

Les propriétés associées aux variables de type Enumération sont les suivantes :
NomPermet de connaître le nom d'une variable de type Enumération.
ValeurPermet de connaître la valeur associée d'une variable de type Enumération.

Fonctions WLangage disponibles

Une énumération peut être stockée dans une rubrique HFSQL ou dans un autre format de fichier. Selon les besoins, il peut être possible de stocker le nom (propriété Nom) ou la valeur de l'énumération (propriété Valeur).
Les fonctions WLangage suivantes permettent de retrouver les caractéristiques d'une énumération stockée :
EnumérationDepuisNomRenvoie une valeur d'énumération connue par son nom.
EnumérationDepuisValeurRenvoie une valeur d'énumération connue par sa valeur associée.
EnumérationVérifieNomVérifie si une valeur d'énumération connue par son nom est valide.
EnumérationVérifieValeurVérifie si une valeur d'énumération connue par sa valeur associée est valide.

Limites

  • Les énumérations ne sont pas disponibles en compilation dynamique.
  • Les énumérations ne sont pas utilisables hors projet.
Version minimum requise
  • Version 18
Documentation également disponible pour…
Commentaires
Limite du nombre de valeurs
La limite maximum pour le nombre de valeurs est 18. À la 19ème une erreur d'exception est générée si cette valeur est lue.
Olivier
31 juil. 2023
Remplir une combo avec une énumération
EnumerationTest est une enumeration
A1 = "Bonjour"
A2 = "Comment vas tu ?"
Fin

sNomValeur est une EnumerationTest

ListeAjoute(COMBO_TEEST, "<Aucun>" + gLien(0))

POUR TOUTE sNomValeur DE EnumerationTest
ListeAjoute(COMBO_TEEST, {"sNomValeur"}..Valeur + gLien({"sNomValeur"}..Nom))
FIN
Emmanuel CARVIN
03 juin 2021

Dernière modification : 06/03/2024

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