|
|
|
|
|
- Quand utiliser l'indirection ?
- Désigner l'objet en cours
- Indirection sur une structure
- Utiliser l'indirection sur les chemins dans un document XML
- Limitations
Opérateurs d'indirection En anglais : Indirection operators
Les opérateurs { et } permettent d'accéder à un champ, une variable, un membre d'une classe ou une rubrique de fichier en construisant dynamiquement le nom du champ, de la variable, du membre de la classe ou de la rubrique. L'intérêt des opérateurs { et } est multiple : - Passer en paramètre un nom de champ, de variable, de membre d'une classe ou de rubrique.
- Construire le nom d'un champ, de la variable, d'un membre d'une classe ou d'une rubrique par programme.
// Indirection simple {"NOM"} = NomCli // Est équivalent à NOM=NomCli {"NOM"} = {"CL.NOMCLI"} // Est équivalent à NOM=CL.NOMCLI {"FENCLI.NOM"} = NomCli // Est équivalent à FENCLI.NOM=NomCli {"FENCLI"+".NOM"} = NomCli // Est équivalent à FENCLI.NOM=NomCli  // Indirection typée {"Nom",indChamp} = NomCli  // Indirection avec un nom de fichier dans une variable nNomFic est une chaîne = "Client" {nNomFic + ".Nom"} = "Durand" HAjoute({nNomFic}) // Indirection dans une procédure NomChamp est une chaîne NomChamp = "SAI_SAISIE1" // SAI_SAISIE1 est le nom du champ // Appel d'une procédure rendant un champ invisible Rend_Invisible(NomChamp)  PROCÉDURE Rend_Invisible(NChamp) {NChamp}..Etat = Invisible // Indirection avec variable NomAlias est une chaîne NomAlias = FenPrécédente() // NOM est le nom du champ // NomCli est la valeur à affecter {NomAlias+".NOM"} = NomCli Abrev est une chaîne NomRub est une chaîne {Abrev+"."+NomRub} = NomCli {Abrev+"."+NomRub} = {NomChamp} // Déclaration d'une classe avec deux membres Maclasse est une Classe Membre1 est une chaîne Membre2 est une chaîne // Affichage de la valeur d'un membre PROCÉDURE GLOBALE AfficheMembre(Numéro) // Récupération de la valeur du membre global choisi Valeur est une chaîne = {"::Membre"+Numéro} Info(Valeur) c est un cWord var est une Description de Variable Def est une Définition  Def = RécupèreDéfinition(c) // Récupère la 2ème variable de la classe : version de Word var = Def..Variable[2]  Trace(var..Nom) // Affiche le nom de la variable Trace("Version de Word: ",{c, var}) // Affiche la version de Word Syntaxe <Expression> : Chaîne de caractères Expression permettant d'identifier le champ, la variable ou la rubrique à manipuler. L'élément est tout d'abord recherché :- parmi les variables,
- selon le nombre de points dans le nom :
- 0 point : recherche parmi les champs, puis les rubriques HFSQL.
- 1 point : recherche parmi les rubriques HFSQL, les champs, puis les paramètres de requête.
- supérieur à 1 point : recherche parmi les champs.
- parmi les éléments spéciaux conservés par compatibilité (par exemple _Ongletx, ...).
Si cette expression correspond à une chaîne vide (""), une erreur du WLangage est générée. <Expression> : Chaîne de caractères Expression permettant d'identifier le membre de la classe.Si le membre est : - global, utilisez la syntaxe suivante : {" :: NomDuMembre"}
- n'est pas global, utilisez la syntaxe suivante : {" : NomDuMembre"}
Si cette expression correspond à une chaîne vide (""), une erreur du WLangage est générée. <Classe> : Chaîne de caractères Instance de la classe <Membre> : Chaîne de caractères ou variable de type Description de variable Correspond :
Indirection en spécifiant le type de l'élément (optimise la vitesse d'exécution) Masquer les détails
{ <Expression>, <Type> }
<Expression> : Chaîne de caractères Expression permettant d'identifier le champ, la variable ou la rubrique à manipuler. Si cette expression correspond à une chaîne vide (""), une erreur du WLangage est générée. <Type> : Constante Constante permettant de préciser le type de l'élément recherché : | | indChamp | Élément recherché parmi les champs et les groupes. | indConnexion | Élément recherché parmi les connexions. | indEtat | Élément recherché parmi les états. | indFenêtre | Élément recherché parmi les fenêtres. | indFichier | Élément recherché parmi les fichiers. | indGPW | Élément recherché parmi les éléments du groupware utilisateur (permet de récupérer l'état initial des champs). | indLiaison | Élément recherché parmi les liaisons. | indParamètreRequête | Élément recherché parmi les paramètres des requêtes. | indRubrique | Élément recherché parmi les rubriques. | indVariable | Élément recherché parmi les variables. | indPage | Élément recherché parmi les pages. |
Remarques Quand utiliser l'indirection ? L'indirection peut être utilisée par exemple : - Pour accéder à la valeur d'un élément (champ, variable, rubrique, ...) :
{s_NomChamp} = 10 ValeurChamp = {s_NomChamp} - Pour utiliser une propriété :
{s_NomChamp}..Hauteur = 10 - Pour manipuler une colonne d'un champ Table par programmation :
{s_NomColonne, indChamp}[Numéro_Ligne] = 10 - Pour manipuler une colonne d'une table :
{s_NomTable + "." +s_NomColonne, indChamp}[Numéro_Ligne] = 10
Liste des exemples associés :
|
Exemples unitaires (WINDEV) : Les indirections
[ + ] Manipulation des indirections à l'aide des opérateurs { et }. Les opérateurs { et } permettent d'accéder à un champ ou une rubrique de fichier en construisant dynamiquement le nom du champ ou le nom de la rubrique. Ce programme réalisé avec WINDEV met en œuvre le mécanisme d'indirection sur les champs des fenêtres pour gérer le "Undo-Redo" et le "couper-copier-coller" de manière générique.
|
|
Exemples unitaires (WEBDEV) : Les indirections
[ + ] Utilisation des indirections sur une variable. Il est à noter que les indirections sont possibles sur les champs, les rubriques, les liaisons, etc. Le principe est identique à celui présenté dans cet exemple.
|
|
Exemples unitaires (WINDEV Mobile) : Les indirections
[ + ] Utilisation des opérateurs d'indirection { et }. Les opérateurs { et } permettent d'accéder à un champ ou une rubrique de fichier en construisant dynamiquement le nom du champ ou le nom de la rubrique. Cet exemple met en œuvre le mécanisme d'indirection sur les champs des fenêtres pour gérer le "Undo-Redo" et le "couper-copier-coller" de manière générique.
|
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|