PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Présentation
  • Passage de paramètres par référence
  • Fonctionnement par défaut
  • Passage d'un champ, d'une fenêtre ou d'un état
  • Passage de paramètres par valeur
  • Présentation
  • Solution 1 : Utilisation des doubles parenthèses
  • Solution 2 : Utilisation de paramètres "locaux" dans la procédure
  • Paramètre correspondants à un élément du projet
  • Cas particulier
  • Passage d'une liste de valeurs
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
Présentation
Les paramètres peuvent être passés à une procédure :
Passage de paramètres par référence

Fonctionnement par défaut

Par défaut, lors de l'appel d'une procédure, les paramètres sont passés par référence (par variable ou par adresse). Si le paramètre est modifié dans la procédure, le traitement appelant la procédure récupérera le paramètre avec sa valeur modifiée.
Pour passer un paramètre par variable à une procédure, utilisez la syntaxe suivante :
<Nom de la procédure>(<Nom de la variable passée en paramètre>)
Par exemple :
Indice est un entier = 1
// Avant l'appel de la procédure, Indice vaut 1
AjouteUn(Indice)
// Après l'appel de la procédure, Indice vaut 2
// -- Déclaration de la procédure
PROCEDURE AjouteUn(Compteur)
Compteur += 1

Passage d'un champ, d'une fenêtre ou d'un état

Lors de l'appel d'une procédure, les paramètres peuvent être un champ, une fenêtre ou un état. Cet objet (champ, fenêtre ou état) est alors manipulé comme un objet "classique".
Pour passer un élément en paramètre à une procédure, utilisez la syntaxe suivante :
<Nom de la procédure>(<Nom de l'élément>)
Par exemple :
// Appel de la procédure ChampNonVisible
ChampNonVisible(ChampAdresse)
// -- Déclaration de la procédure
PROCEDURE ChampNonVisible(ChampAdresse)
ChampAdresse..Visible = Faux
Remarques :
  • Le mot-clé MoiMême permet de manipuler le champ en cours.
  • Le mot-clé MaFenêtre permet de manipuler la fenêtre en cours.
  • Le mot-clé MonEtat permet de manipuler l'état en cours.
Passage de paramètres par valeur

Présentation

Lors de l'appel d'une procédure, les paramètres peuvent être passés par valeur. Si le paramètre est modifié dans la procédure, le traitement appelant la procédure récupérera le paramètre avec sa valeur NON modifiée.
Il existe deux possibilités pour passer les paramètres par valeur :

Solution 1 : Utilisation des doubles parenthèses

Pour passer un paramètre par valeur à une procédure, utilisez la syntaxe suivante :
<Nom de la procédure>((<Nom de la variable passée en paramètre>))
Par exemple :
Indice est un entier = 1
// Avant l'appel de la procédure, Indice vaut 1
AjouteUn((Indice))
// Après l'appel de la procédure, Indice vaut toujours 1
// -- Déclaration de la procédure
PROCEDURE AjouteUn(Compteur)
Compteur += 1

Solution 2 : Utilisation de paramètres "locaux" dans la procédure

Lors de la déclaration d'une procédure, les variables passées en paramètre peuvent devenir locales à cette procédure. Pour cela, il suffit de faire précéder le paramètre local par le mot-clé LOCAL. Par exemple :
PROCEDURE MaProc(LOCAL Indice, LOCAL Compteur, Numéro)
Si ce paramètre est modifié dans la procédure, le traitement appelant la procédure récupérera le paramètre avec sa valeur NON modifiée.
Remarques :
  • Le mot-clé LOCAL force la copie de l'élément passé en paramètre dans les cas suivants :
    • instance de classe ou de tableau passée à un paramètre non typé.
      Exemple :
      Procédure MaProcédure(LOCAL Paramètre)
    • instance de classe passée à un paramètre typé.
      Exemple :
      Procédure MaProcédure(LOCAL Paramètre est CClasse)
  • Le mot-clé LOCAL peut être remplacé par le mot-clé LOCALE ou LOCALES.
Versions 19 et supérieures

Paramètre correspondants à un élément du projet

Si votre procédure utilise des éléments du projet, jusqu'à la version 19, le nom de l'élément devait être mis entre guillemets lors de l'appel de la procédure. Par exemple :
MaProcédure("FEN_Exemple")
A partir de la version 19, il est possible de passer directement le nom de l'élément sans guillemets et de disposer de la complétion sur le paramètre lors de la saisie.
WINDEVWINDEV Mobile Cas des fenêtres
Il suffit d'utiliser l'attribut d'extension <nom de fenêtre>. La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomFenêtre est une chaîne <nom de fenêtre>)
Exemple :
// Déclaration de la procédure
PROCEDURE ContrôleSaisie(sNomFenêtre est une chaîne <nom de fenêtre>)

soit i = 1
soit ResChamp = EnumèreChamp(sNomFenêtre, i)
TANTQUE ResChamp <> ""
i++
Trace("Traitement du champ "+ResChamp+" de la fenêtre " + sNomFenêtre)
ResChamp = EnumèreChamp(sNomFenêtre, i)
FIN
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomFenêtre contient le nom de la fenêtre. La complétion proposera toutes les fenêtres présentes dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • ContrôleSaisie(NomFenêtre)
  • ContrôleSaisie("NomFenêtre")
  • ContrôleSaisie(Nom variable chaîne contenant le nom de la fenêtre)
WEBDEV - Code Serveur Cas des pages
Il suffit d'utiliser l'attribut d'extension <nom de page>. La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomPage est une chaîne <nom de page>)
Exemple :
// Déclaration de la procédure
PROCEDURE ContrôleSaisie(sNomPage est une chaîne <nom de page>)
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomPage contient le nom de la page. La complétion proposera toutes les pages présentes dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • ContrôleSaisie(NomPage)
  • ContrôleSaisie("NomPage")
  • ContrôleSaisie(Nom variable chaîne contenant le nom de la page)
Cas des états
Il suffit d'utiliser l'attribut d'extension <nom d'état> (ou <nom de état>). La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomEtat est une chaîne <nom d'état>)
Exemple :
// Déclaration de la procédure
PROCEDURE VérifDonnées(sNomEtat est une chaîne <nom d'état>)
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomEtat contient le nom de l'état. La complétion proposera tous les états présents dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • ContrôleSaisie(NomEtat)
  • ContrôleSaisie("NomEtat")
  • ContrôleSaisie(Nom variable chaîne contenant le nom de l'état)
Cas des sources de données
La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomFichier est une source de données)
Exemple :
// Déclaration de la procédure
PROCEDURE VérifDonnées(sNomFicher est une Source de Données)
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomFichier contient le nom d'une source de données. La complétion proposera toutes les sources de données (fichiers, requêtes, variables de type Source de données) présentes dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • VérifDonnées(Fichier)
  • VérifDonnées(Requête)
  • VérifDonnées("Fichier")
  • VérifDonnées("Requête")
  • VérifDonnées(Nom variable chaîne contenant le nom du fichier ou de la requête)
  • VérifDonnées(Nom variable de type source de données)
Remarque : Pour associer la source de données à un fichier de données (ou une requête) existant, il suffit d'ajouter un attribut d'extension spécifique. Dans ce cas, la complétion automatique permettra d'accéder directement aux rubriques. Pour plus de détails, consultez Variable de type Source de données.
Nouveauté 19

Paramètre correspondants à un élément du projet

Si votre procédure utilise des éléments du projet, jusqu'à la version 19, le nom de l'élément devait être mis entre guillemets lors de l'appel de la procédure. Par exemple :
MaProcédure("FEN_Exemple")
A partir de la version 19, il est possible de passer directement le nom de l'élément sans guillemets et de disposer de la complétion sur le paramètre lors de la saisie.
WINDEVWINDEV Mobile Cas des fenêtres
Il suffit d'utiliser l'attribut d'extension <nom de fenêtre>. La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomFenêtre est une chaîne <nom de fenêtre>)
Exemple :
// Déclaration de la procédure
PROCEDURE ContrôleSaisie(sNomFenêtre est une chaîne <nom de fenêtre>)

soit i = 1
soit ResChamp = EnumèreChamp(sNomFenêtre, i)
TANTQUE ResChamp <> ""
i++
Trace("Traitement du champ "+ResChamp+" de la fenêtre " + sNomFenêtre)
ResChamp = EnumèreChamp(sNomFenêtre, i)
FIN
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomFenêtre contient le nom de la fenêtre. La complétion proposera toutes les fenêtres présentes dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • ContrôleSaisie(NomFenêtre)
  • ContrôleSaisie("NomFenêtre")
  • ContrôleSaisie(Nom variable chaîne contenant le nom de la fenêtre)
WEBDEV - Code Serveur Cas des pages
Il suffit d'utiliser l'attribut d'extension <nom de page>. La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomPage est une chaîne <nom de page>)
Exemple :
// Déclaration de la procédure
PROCEDURE ContrôleSaisie(sNomPage est une chaîne <nom de page>)
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomPage contient le nom de la page. La complétion proposera toutes les pages présentes dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • ContrôleSaisie(NomPage)
  • ContrôleSaisie("NomPage")
  • ContrôleSaisie(Nom variable chaîne contenant le nom de la page)
Cas des états
Il suffit d'utiliser l'attribut d'extension <nom d'état> (ou <nom de état>). La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomEtat est une chaîne <nom d'état>)
Exemple :
// Déclaration de la procédure
PROCEDURE VérifDonnées(sNomEtat est une chaîne <nom d'état>)
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomEtat contient le nom de l'état. La complétion proposera tous les états présents dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • ContrôleSaisie(NomEtat)
  • ContrôleSaisie("NomEtat")
  • ContrôleSaisie(Nom variable chaîne contenant le nom de l'état)
Cas des sources de données
La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomFichier est une source de données)
Exemple :
// Déclaration de la procédure
PROCEDURE VérifDonnées(sNomFicher est une Source de Données)
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomFichier contient le nom d'une source de données. La complétion proposera toutes les sources de données (fichiers, requêtes, variables de type Source de données) présentes dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • VérifDonnées(Fichier)
  • VérifDonnées(Requête)
  • VérifDonnées("Fichier")
  • VérifDonnées("Requête")
  • VérifDonnées(Nom variable chaîne contenant le nom du fichier ou de la requête)
  • VérifDonnées(Nom variable de type source de données)
Remarque : Pour associer la source de données à un fichier de données (ou une requête) existant, il suffit d'ajouter un attribut d'extension spécifique. Dans ce cas, la complétion automatique permettra d'accéder directement aux rubriques. Pour plus de détails, consultez Variable de type Source de données.

Paramètre correspondants à un élément du projet

Si votre procédure utilise des éléments du projet, jusqu'à la version 19, le nom de l'élément devait être mis entre guillemets lors de l'appel de la procédure. Par exemple :
MaProcédure("FEN_Exemple")
A partir de la version 19, il est possible de passer directement le nom de l'élément sans guillemets et de disposer de la complétion sur le paramètre lors de la saisie.
WINDEVWINDEV Mobile Cas des fenêtres
Il suffit d'utiliser l'attribut d'extension <nom de fenêtre>. La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomFenêtre est une chaîne <nom de fenêtre>)
Exemple :
// Déclaration de la procédure
PROCEDURE ContrôleSaisie(sNomFenêtre est une chaîne <nom de fenêtre>)

soit i = 1
soit ResChamp = EnumèreChamp(sNomFenêtre, i)
TANTQUE ResChamp <> ""
i++
Trace("Traitement du champ "+ResChamp+" de la fenêtre " + sNomFenêtre)
ResChamp = EnumèreChamp(sNomFenêtre, i)
FIN
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomFenêtre contient le nom de la fenêtre. La complétion proposera toutes les fenêtres présentes dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • ContrôleSaisie(NomFenêtre)
  • ContrôleSaisie("NomFenêtre")
  • ContrôleSaisie(Nom variable chaîne contenant le nom de la fenêtre)
WEBDEV - Code Serveur Cas des pages
Il suffit d'utiliser l'attribut d'extension <nom de page>. La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomPage est une chaîne <nom de page>)
Exemple :
// Déclaration de la procédure
PROCEDURE ContrôleSaisie(sNomPage est une chaîne <nom de page>)
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomPage contient le nom de la page. La complétion proposera toutes les pages présentes dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • ContrôleSaisie(NomPage)
  • ContrôleSaisie("NomPage")
  • ContrôleSaisie(Nom variable chaîne contenant le nom de la page)
Cas des états
Il suffit d'utiliser l'attribut d'extension <nom d'état> (ou <nom de état>). La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomEtat est une chaîne <nom d'état>)
Exemple :
// Déclaration de la procédure
PROCEDURE VérifDonnées(sNomEtat est une chaîne <nom d'état>)
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomEtat contient le nom de l'état. La complétion proposera tous les états présents dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • ContrôleSaisie(NomEtat)
  • ContrôleSaisie("NomEtat")
  • ContrôleSaisie(Nom variable chaîne contenant le nom de l'état)
Cas des sources de données
La syntaxe à utiliser est la suivante :
PROCEDURE NomProcédure(NomFichier est une source de données)
Exemple :
// Déclaration de la procédure
PROCEDURE VérifDonnées(sNomFicher est une Source de Données)
Dans cet exemple, lors de l'appel de la procédure, le paramètre sNomFichier contient le nom d'une source de données. La complétion proposera toutes les sources de données (fichiers, requêtes, variables de type Source de données) présentes dans le projet.
Les appels de la procédure pourront correspondre aux syntaxes suivantes :
  • VérifDonnées(Fichier)
  • VérifDonnées(Requête)
  • VérifDonnées("Fichier")
  • VérifDonnées("Requête")
  • VérifDonnées(Nom variable chaîne contenant le nom du fichier ou de la requête)
  • VérifDonnées(Nom variable de type source de données)
Remarque : Pour associer la source de données à un fichier de données (ou une requête) existant, il suffit d'ajouter un attribut d'extension spécifique. Dans ce cas, la complétion automatique permettra d'accéder directement aux rubriques. Pour plus de détails, consultez Variable de type Source de données.
Cas particulier
Versions 18 et supérieures

Passage d'une liste de valeurs

Lors de l'appel d'une procédure, les paramètres peuvent être une liste de valeurs ("[1,2,3]" par exemple).
Pour passer une liste de valeurs en paramètre à une procédure, utilisez la syntaxe suivante :
<Nom de la procédure>(<Liste de valeurs>)
Par exemple :
// Appel de la procédure
MaProcédure([1,2,3])
// -- Déclaration de la procédure
PROCEDURE MaProcédure(Valeurs)
MonTableau est un tableau d'entiers = Valeurs
Remarques :
  • Si le paramètre de la procédure n'est pas typé, la liste de valeurs est passée directement à la procédure. Comme les listes de valeurs ne sont pas manipulables directement, ce paramètre peut être utilisé uniquement dans des fonctionnalités qui acceptent les listes de valeurs :
    • appel d'une fonction du WLangage qui autorise les listes de valeurs (HFiltre, HLitRecherche, ...).
    • affectation dans une variable de type structuré (tableau, classe, structure, ...).
    • appel d'une procédure utilisateur qui autorise une liste de valeurs.
  • Si le paramètre de la procédure est de type tableau, un tableau est automatiquement alloué et rempli avec les valeurs de la liste de valeurs.
  • Si le paramètre de la procédure est d'un autre type, une erreur de compilation apparaîtra (ou une erreur WLangage se produira à l'exécution si le paramètre réel n'est pas typé).
Surcharge de fonctions WLangage : Grâce aux paramètres de type "liste de valeurs", il est possible de surcharger les fonctions WLangage acceptant des listes de valeurs, notamment :
Nouveauté 18

Passage d'une liste de valeurs

Lors de l'appel d'une procédure, les paramètres peuvent être une liste de valeurs ("[1,2,3]" par exemple).
Pour passer une liste de valeurs en paramètre à une procédure, utilisez la syntaxe suivante :
<Nom de la procédure>(<Liste de valeurs>)
Par exemple :
// Appel de la procédure
MaProcédure([1,2,3])
// -- Déclaration de la procédure
PROCEDURE MaProcédure(Valeurs)
MonTableau est un tableau d'entiers = Valeurs
Remarques :
  • Si le paramètre de la procédure n'est pas typé, la liste de valeurs est passée directement à la procédure. Comme les listes de valeurs ne sont pas manipulables directement, ce paramètre peut être utilisé uniquement dans des fonctionnalités qui acceptent les listes de valeurs :
    • appel d'une fonction du WLangage qui autorise les listes de valeurs (HFiltre, HLitRecherche, ...).
    • affectation dans une variable de type structuré (tableau, classe, structure, ...).
    • appel d'une procédure utilisateur qui autorise une liste de valeurs.
  • Si le paramètre de la procédure est de type tableau, un tableau est automatiquement alloué et rempli avec les valeurs de la liste de valeurs.
  • Si le paramètre de la procédure est d'un autre type, une erreur de compilation apparaîtra (ou une erreur WLangage se produira à l'exécution si le paramètre réel n'est pas typé).
Surcharge de fonctions WLangage : Grâce aux paramètres de type "liste de valeurs", il est possible de surcharger les fonctions WLangage acceptant des listes de valeurs, notamment :

Passage d'une liste de valeurs

Lors de l'appel d'une procédure, les paramètres peuvent être une liste de valeurs ("[1,2,3]" par exemple).
Pour passer une liste de valeurs en paramètre à une procédure, utilisez la syntaxe suivante :
<Nom de la procédure>(<Liste de valeurs>)
Par exemple :
// Appel de la procédure
MaProcédure([1,2,3])
// -- Déclaration de la procédure
PROCEDURE MaProcédure(Valeurs)
MonTableau est un tableau d'entiers = Valeurs
Remarques :
  • Si le paramètre de la procédure n'est pas typé, la liste de valeurs est passée directement à la procédure. Comme les listes de valeurs ne sont pas manipulables directement, ce paramètre peut être utilisé uniquement dans des fonctionnalités qui acceptent les listes de valeurs :
    • appel d'une fonction du WLangage qui autorise les listes de valeurs (HFiltre, HLitRecherche, ...).
    • affectation dans une variable de type structuré (tableau, classe, structure, ...).
    • appel d'une procédure utilisateur qui autorise une liste de valeurs.
  • Si le paramètre de la procédure est de type tableau, un tableau est automatiquement alloué et rempli avec les valeurs de la liste de valeurs.
  • Si le paramètre de la procédure est d'un autre type, une erreur de compilation apparaîtra (ou une erreur WLangage se produira à l'exécution si le paramètre réel n'est pas typé).
Surcharge de fonctions WLangage : Grâce aux paramètres de type "liste de valeurs", il est possible de surcharger les fonctions WLangage acceptant des listes de valeurs, notamment :
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire