DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Syntaxe WLangage / Types du WLangage / Types avancés
  • Affectation d'une variable de type Procédure
  • Affectation multiple d'une variable de type Procédure
  • Ordre d'exécution des procédures
  • Passage de paramètres de type Procédure par référence ou par valeur
  • Appel des procédures présentes dans une variable de type Procédure
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
Le type Procédure permet de manipuler par programmation :
  • les procédures ou méthodes présentes dans le projet.
  • les procédures ou méthodes présentes dans un composant interne.
  • les procédures ou méthodes présentes dans un composant externe.
Ce type de variable est très utile notamment :
  • pour optimiser le temps de lancement des procédures. L'utilisation de ce type de variable permet de remplacer les procédures exécutées par la fonction ExécuteTraitement.
  • pour mettre en place des algorithmes avancés (événements personnalisés, notifications, ...).
Cette page d'aide présente :
Exemple
p est une procédure
// Affectation de la variable Procédure avec la procédure "MaProcédure" présente dans le projet
p = MaProcédure
// Exécution de la procédure
p(5)
// Equivalent de MaProcédure(5)
Remarques

Affectation d'une variable de type Procédure

Une variable de type Procédure peut être affectée avec :
  • une procédure connue dans le projet.
    La syntaxe à utiliser est la suivante :
    <Nom de la variable de type Procédure> = <Procédure>

    Par exemple :
    p est une procédure
    p = TestExistence

    Remarques :
    • Le paramètre <Procédure> doit correspondre à une procédure existante dans le projet.
    • Le paramètre <Procédure> ne doit pas être mis entre guillemets.
    • Le paramètre <Procédure> ne doit pas être suivi des paramètres d'appel.
    • Le paramètre <Procédure> ne doit pas correspondre au nom d'une procédure interne.
  • WINDEV une procédure compilée dynamiquement avec la fonction Compile.
    La syntaxe à utiliser est la suivante :
    <Nom de la variable de type Procédure> = Compile(<Code de la procédure>)

    ou

    <Nom de la variable de type Procédure> =
    Compile(<Nom Procédure>, <Code de la procédure>)

    Par exemple :
    p est une procédure
    p = Compile("RENVOYER n1 + n2")

    Remarques :
    • Si le nom de la procédure est spécifiée, la procédure pourra également être exécutée par les fonctions Exécute et ExécuteTraitement.
    • Par défaut, la procédure compilée dynamiquement est une procédure globale. Pour définir une procédure locale, il est nécessaire d'utiliser la syntaxe définissant le nom de la procédure pour spécifier l'élément voulu dans le nom de la procédure.
  • une méthode de classe.
    La syntaxe à utiliser est la suivante :
    <Nom de la variable de type Procédure> = <Méthode>

    Remarques :
    • Le paramètre <Méthode> peut correspondre à une méthode de la classe courante ou d'une classe de base.
    • Si <Méthode> est une méthode d'instance, la notation suivante doit être utilisée :
      <Un_Objet>.<Méthode>
Autres syntaxes disponibles
  • Il est également possible de recopier les procédures d'une variable de type Procédure dans une autre variable de type Procédure. La syntaxe est la suivante :
    <Nom de la variable de type Procédure destination> =
    <Nom de la variable de type Procédure source>

    Remarque : Il s'agit d'une copie de variable : toute modification sur une des variables ne sera pas répercutée sur l'autre.
  • Il est également possible de chercher à l'exécution une procédure connue par son nom et de l'affecter à une variable de type Procédure. Dans ce cas, la syntaxe à utiliser est la suivante :
    <Nom de la variable de type Procédure> = <Nom de la procédure (avec guillemets)>

    Remarque : L'utilisation de cette syntaxe pour l'affectation d'une variable de type Procédure est relativement lente car le nom de la procédure est recherché dans toutes les procédures du projet.
  • Affectation par référence (opérateur <-)
    L'affectation par prise de référence force l'élément destination à référencer la même zone de données que l'élément source.
    Ainsi, une variable de type Procédure peut être manipulée par une autre variable de type Procédure. Pour cela, il faut récupérer une référence sur la variable Procédure elle-même. Toute modification ultérieure sur une des variables sera répercutée sur l'autre.
    La syntaxe à utiliser est la suivante :
    <Nom variable de type Procédure destination> <- <Nom variable de type Procédure source>

Affectation multiple d'une variable de type Procédure

Il est possible d'affecter plusieurs procédures ou méthodes à une variable de type Procédure grâce à l'opérateur "+=". Les différentes procédures seront appelées les unes à la suite des autres.
Par exemple :
p est une procédure
p += Proc1
p += Proc2
Remarque : Pour supprimer une procédure d'une variable de type Procédure, il est possible d'utiliser l'opérateur "-=".
Par exemple :
p est une procédure
p += Proc1
p += Proc2
 
...
 
p -= Proc2

Ordre d'exécution des procédures

Il est possible de remplacer ou d'insérer une procédure avant ou après les autres procédures dans un élément de type Procédure grâce aux propriétés Avant et Après.
Exemple :
p est une procédure
p = MaProcédure
p.Après = MaProcédureAppeléeAprès
p.Avant = MaProcédureAppeléeAvant
 
// L'ordre d'appel des procédures sera :
// - MaProcédureAppeléeAvant
// - MaProcédure
// - MaProcédureAppeléeAprès
p()

Passage de paramètres de type Procédure par référence ou par valeur

Pour manipuler une procédure comme paramètre d'une autre procédure, il est nécessaire de typer le paramètre. La syntaxe à utiliser est la suivante :
  • pour un passage de paramètres par référence :
    PROCEDURE <NomProcédure>(MaProcédure est une Procédure)
  • pour un passage de paramètres par valeur :
    PROCEDURE <NomProcédure>(LOCAL MaProcédure est une Procédure)
Les appels possibles à la procédure <NomProcédure> sont alors :
  • appel en spécifiant une procédure connue du projet : la syntaxe à utiliser est la suivante :
    NomProcédure(<Procédure du projet>)

    Remarques :
    • Le paramètre <Procédure du projet> doit correspondre à une procédure existante dans le projet.
    • Le paramètre <Procédure du projet> ne doit pas être mis entre guillemets.
    • Le paramètre <Procédure du projet> ne doit pas être suivi des paramètres d'appel.
  • appel en spécifiant une méthode de classe : la syntaxe à utiliser est la suivante :
    NomProcédure(<Méthode>)

    Remarques :
    • Le paramètre <Méthode> peut correspondre à une méthode de la classe courante ou d'une classe de base.
    • Si <Méthode> est une méthode d'instance, la notation suivante doit être utilisée <Un_Objet>.<Méthode>.
  • appel avec référence à une variable procédure : la syntaxe à utiliser est la suivante :
    NomProcédure(<Nom de la variable de type Procédure>)
  • appel avec recherche à l'exécution une procédure connue par son nom : la syntaxe à utiliser est la suivante :
    NomProcédure(<Nom de la procédure (avec guillemets)>)

Appel des procédures présentes dans une variable de type Procédure

L'appel des procédures présentes dans une variable de type Procédure est réalisé par la syntaxe classique des procédures. Cette syntaxe est utilisée directement sur la variable Procédure avec des parenthèses contenant 0, 1 ou plusieurs paramètres :
<Nom de la variable Procédure> ([<Paramètre 1> [, ...[, <Paramètre N>]]])
Exemples :
p1 est une procédure
p1 = Proc1
p1()
 
p2 est une procédure
p2 = Proc2
p2(1,2)
Si la variable de type Procédure contient plusieurs procédures, toutes les procédures sont exécutées dans l'ordre des affectations.
p3 est une procédure
p3 += Proc3_1
p3 += Proc3_2
p3("paramètre") // appelle Proc3_1 et Proc3_2
Gestion de la valeur de retour
  • Si la variable de type Procédure contient une seule procédure, l'appel renvoie la valeur de retour de la procédure.
  • Si la variable de type Procédure contient plusieurs procédures, l'appel renvoie la valeur de retour de la dernière procédure appelée.
Liste des exemples associés :
Le type Procédure Exemples unitaires (WINDEV) : Le type Procédure
[ + ] Utilisation du type Procédure du WLangage.
Ce type Procédure permet de gérer très facilement une liste de procédures.
Il est possible d'en ajouter et d'en supprimer dynamiquement (avec les opérateurs += et -=)
Version minimum requise
  • Version 17
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 05/09/2023

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