Déjà évoqué dans un précédent billet, les attributs d'extension sont très utiles et permettent de considérablement simplifier l'écriture de traitements WLangage, tout en améliorant la lisibilité du code.

 

Combinés avec l'utilisation de procédures internes, les attributs d'extension permettent par exemple de regrouper dans un seul code un ensemble de tâches. Sans procédures internes, le même traitement aurait nécessité de créer plusieurs procédures, définir des automatismes...


Voici un exemple très simple à copier/coller dans un code de clic bouton d'une application WINDEV :

 

// Le bouton nommé BTN_Test est grisé durant le traitement une jauge infinie le remplace...

BTN_TEST..Etat = Grisé
JAUGE_Infinie est un Champ <- ChampCrée("JAUGE_Infinie" + DonneGUID(),typJaugeInfinie,MoiMême..X,MoiMême..Y,MoiMême..Largeur,MoiMême..Hauteur,Vrai)
JAUGE_Infinie..Opacité = 25
JAUGE_Infinie..Altitude = BTN_TEST..Altitude+1

// Lancement du traitement à exécuter sans bloquer l'application
TraitementLong()

PROCEDURE INTERNE TraitementLong () <thread>
// Ici exécution d'un traitement en tâche de fond
// dans un thread secondaire (pas d'accès à l'interface)
ThreadPause(5 s)

// Traitement terminé, rappel d'un traitement du thread
// principal donc autorisé à mettre à jour l'interface
FinTraitementLong()
FIN



PROCEDURE INTERNE FinTraitementLong <thread principal>
// Mise à jour de l'interface : bouton réactivé
BTN_TEST..Etat = Actif
ChampSupprime(JAUGE_Infinie)
FIN

 

A noter que l'attribut <thread principal> ne s'applique naturellement pas dans un site WEBDEV, puisque l'affichage est géré "côté navigateur". L'affichage d'une jauge dans un site web se ferait avec la démarche suivante :

  • le code navigateur d'un bouton :
    • affiche la jauge ou met en évidence le lancement d'un traitement (popup...),
    • lance le traitement via une procédure ajax du serveur avec la fonction AjaxExecuteAsynchrone,
  • la procédure navigateur 'callback" rappelée après le traitement serveur par AjaxExecuteAsynchrone, masquer la jauge (ferme la popup...).

 

 

 

< Retour

5 commentaires

Manuel
24/10/2019 - 09:09 - Répondre
Vous devriez préciser que c'est uniquement valable pour Windev, n'est pas autorisé en Webdev.

Guillaume BAYLE
24/10/2019 - 10:00 - Répondre
Bonjour, j'ai demandé un complément de la page d'aide dédiée aux attributs afin effectivement d'indiquer leur pertinence par plateformes. Bons développements.

jose
05/01/2024 - 22:02 - Répondre
bonjour, j'ai beau chercher, je ne comprends pas comment utiliser l'attribut d’extension pour une procédure interne un exemple?

LoicHAMEL
08/01/2024 - 08:47 - Répondre
Bonjour, L'exemple est donné dans l'article. Si vous copier le code fourni vous aurez l'exemple souhaité.

josé
13/01/2024 - 18:59 - Répondre
Bonjour, le message efface une partie de mon texte, mon problème est avec l'attribut d'extention "fin traitement", je ne comprends pas comment l'utiliser, et je ne trouve pas d'exemple. merci

Publier un commentaire : 
Votre adresse email ne sera pas publiée