|
|
|
|
|
- Présentation
- Déclaration
- Exemples
- Remplacer des tabulation par des espaces
- Extension du type Couleur
Une procédure d'extension permet d'ajouter des procédures WLangage "personnelles" aux types du langage (chaîne, date, couleur, etc.). Ces procédures peuvent ensuite être appelées comme des fonctions natives du WLangage. Le type de base du WLangage est alors "étendu". Pour indiquer qu'une procédure est une procédure d'extension, il est nécessaire que : - le premier paramètre utilise le type qui doit être "étendu",
- le prototype de la procédure comporte l'attribut <extension>.
Exemple de déclaration d'une procédure d'extension du type chaîne : PROCÉDURE MaProcédurePerso(s est une chaîne) <extension> Remarques : - Les procédures d'extension apparaissent dans l’assistance de code (complétion) du type étendu.
- Les procédures d'extension ne peuvent pas être définies sur le type Booléen, Entier, Réel, Numérique, etc. (tous les types permettant de manipuler des valeurs numériques).
- Seuls les types du WLangage peuvent être étendus.
- Seules les procédures globales peuvent avoir l'attribut <extension>.
- Si la procédure d'extension surcharge une fonction WLangage, la syntaxe classique de la fonction WLangage sera également surchargée. Par exemple, la création d'une procédure d'extension "Formate" sur le type chaîne surchargera la fonction <Chaîne>.Formate et la fonction ChaineFormate.
- Il est possible d'enchainer les appels à des procédures d'extension.
- Le mot-clé 'This' a le même comportement que dans les classes ou les champs : il référence l'élément en cours d'appel.
Dans le cas d'une procédure d'extension, le mot-clé 'This' référence le premier paramètre. Il est donc possible d'utiliser 'This' précédé de 'WL' pour référencer les fonctions standards du WLangage et ainsi éviter les appels à une fonction surchargée. Exemple : PROCÉDURE Formate(x est un chaîne) : chaîne <extension>
Trace(This)
RENVOYER WL.This.Formate(ccMajuscule)
- Les procédures peuvent être définies pour un type de champ donné en utilisant l'attribut <type champ>. Par exemple, la procédure suivante est utilisable pour un champ Bouton :
PROCÉDURE Bouton(x est un Champ <type champ = typBouton>)
Il est possible d'étendre une procédure pour un type de champ donné en utilisant la syntaxe suivante
PROCÉDURE MaProcédureChampExtension(x est un champ <type champ = xxx>)<extension> Exemple :
PROCÉDURE ExtensionBouton(x est un Champ <type champ = typBouton>) <extension>
Remplacer des tabulation par des espaces Procédure permettant de remplacer les tabulations par des espaces : PROCÉDURE RemplaceTABParXEspace(s est une chaîne, n est un entier) <extension> : chaîne
RENVOYER s.Remplace(TAB, Répète(" ", n))
L'appel de la procédure d'extension est le suivant : sTexte est une chaîne = TAB + "XXX"
Trace(sTexte)
Trace(sTexte.RemplaceTABParXEspace(4))
Extension du type Couleur Procédure permettant d'étendre le type Couleur, afin de récupérer une couleur de texte qui s'affichera lisiblement sur une couleur de fond donnée. PROCÉDURE CouleurLisible(CouleurOrigine est une Couleur) <extension> : Couleur
nLuminosité est un entier
rLuminance est un réel
CouleurRetour est une Couleur
rLuminance = 1 - (0.299 * CouleurOrigine..Rouge + ...
0.587 * CouleurOrigine..Vert + 0.114 * CouleurOrigine..Bleu)/255
SI rLuminance < 0.5 ALORS
nLuminosité = 12
SINON
nLuminosité = 88
FIN
CouleurRetour = TSL(CouleurTeinte(CouleurOrigine), CouleurSaturation(CouleurOrigine), nLuminosité)
RENVOYER CouleurRetour
L'appel de la procédure d'extension est le suivant :
tabCouleursHTML est un tableau de chaînes
tabCouleursHTML.Ajoute("#F48FB1")
tabCouleursHTML.Ajoute("#C2185B")
tabCouleursHTML.Ajoute("#64B5F6")
tabCouleursHTML.Ajoute("#1565C0")
tabCouleursHTML.Ajoute("#81C784")
tabCouleursHTML.Ajoute("#2E7D32")
MaCouleur est une Couleur
MaCouleur = HTMLVersRVB(tabCouleursHTML[Hasard(1, tabCouleursHTML..Occurrence)] )
LIB_TestCouleurFond.CouleurFond = MaCouleur
LIB_TestCouleurFond.Couleur = MaCouleur.CouleurLisible()
Liste des exemples associés :
|
Exemples didactiques : ProceduresDExtension
[ + ] Cet exemple montre l'utilisation de l'attribut <extension>, pour ajouter des fonctionnalités sur les types du WLangage.
|
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|