PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • 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 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/iPadApple WatchUniversal Windows 10 AppWindows Mobile
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, ...).
Versions 21 et supérieures
WINDEVWINDEV MobileUniversal Windows 10 App Ce type de variable est désormais disponible en mode Universal Windows 10 App.
WINDEV MobileApple Watch Ce type de variable est désormais disponible en mode Apple Watch.
Nouveauté 21
WINDEVWINDEV MobileUniversal Windows 10 App Ce type de variable est désormais disponible en mode Universal Windows 10 App.
WINDEV MobileApple Watch Ce type de variable est désormais disponible en mode Apple Watch.
WINDEVWINDEV MobileUniversal Windows 10 App Ce type de variable est désormais disponible en mode Universal Windows 10 App.
WINDEV MobileApple Watch Ce type de variable est désormais disponible en mode Apple Watch.
Versions 22 et supérieures
WINDEV MobileWidget Android Cette fonction est désormais disponible en mode Widget Android.
WINDEV MobileAndroid Cette fonction est désormais disponible pour les applications Android.
WINDEVJava Cette fonction est désormais disponible pour les applications Java.
Nouveauté 22
WINDEV MobileWidget Android Cette fonction est désormais disponible en mode Widget Android.
WINDEV MobileAndroid Cette fonction est désormais disponible pour les applications Android.
WINDEVJava Cette fonction est désormais disponible pour les applications Java.
WINDEV MobileWidget Android Cette fonction est désormais disponible en mode Widget Android.
WINDEV MobileAndroid Cette fonction est désormais disponible pour les applications Android.
WINDEVJava Cette fonction est désormais disponible pour les applications Java.
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.
  • Versions 19 et supérieures
    WINDEVWEBDEV - Code ServeuriPhone/iPadWindows Mobile 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.
    Nouveauté 19
    WINDEVWEBDEV - Code ServeuriPhone/iPadWindows Mobile 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.
    WINDEVWEBDEV - Code ServeuriPhone/iPadWindows Mobile 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> doit correspondre à une méthode de la classe courante ou d'une classe de base.
    • Si <Méthode> est une méthode d'instance, le code doit être exécuté dans une méthode d'instance de la classe contenant la méthode ou dans une classe dérivée.
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
Versions 18 et supérieures
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
Nouveauté 18
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
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
Versions 19 et supérieures

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()
Nouveauté 19

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()

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 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>)

    Remarque : Le paramètre <Méthode> doit correspondre à une méthode de la classe courante ou d'une classe de base.
  • 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.
Version minimum requise
  • Version 17
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire