IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

[wd10] Superchamp:confusion de procédures locales


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 39
    Points : 30
    Points
    30
    Par défaut [wd10] Superchamp:confusion de procédures locales
    Bonjour,

    j'ai créé un superchamp (qui gère des entêtes de formulaires) que j'utilise dans plusieurs fenêtres.
    Ce superchamp fait appel, dans son bouton "valider", à deux procédure locales des fenêtres dans lesquelles il est implanté:
    avantValidation() et aprèsValidation()

    Le problème, c'est qu'à l'execution, le superchamp appelle toujours les procédures locales de la même fenêtre, quelle que soit la fenêtre dans laquelle on se trouve.

    Exemple: le superchamp de fFormulaire3 exécute les procédures locales de fFormulaire1, qui est la dernière qui a été synchronisée par abonnement.

    - Avez vous déjà rencontré des problèmes de ce type?
    - Comment utiliser l'indirection pour forcer explicitement l'appel des bonnes procédures locales?

    J'ai testé:
    {gsFenetreParent+".avantvalidation"}() mais ça ne fonctionne pas.
    Pas plus que {gsfenetreParent}.avantValidation()

    Merci d'avance pour votre aide!

  2. #2
    Membre averti Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Points : 305
    Points
    305
    Par défaut ExecuteTraitement()
    Tu es allé voir l'aide sur la fonction ExecuteTraitement ?

    Des fois, té mieux de pas être conscient de c'qui s'passe, pis rester heureux !!!

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Août 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 140
    Points : 312
    Points
    312
    Par défaut
    Le Shadow propose une solution qui est très intéressante dans ton cas..
    Par exemple, utiliser des champs que tu disposes sur ta fenêtre et que tu exécutes à l'aide de : ExecuteTraitement(MaPage.MonBouton, trtClic).
    Cette fonction est à utiliser dans ton traitement Valider de ton superchamps.

    De cette manière, plus de soucis de nom identique pour les traitements normalement.. puisque MaPage.MonBouton est un élément unique dans le projet. Dans ce bouton, tu places soit l'appel à la procèdure globale.. soit directement le code comme ça quand tu veux te servir de ces étapes "avant et apres validation", tu n'auras qu'à faire un copier coller du bouton en question...
    Cette méthode est à tester....


    Une autre solution plus classique, peut être plus ennuyante à coder dans une première approche.. mais au combien + maintenable .. coder une procèdure globale que tu paramètres comme il se doit (ou qui utilise des variables globales de projet en guise de paramètres).
    Cette solution est très intéressante car elle permet de répercuter une modification de code sur toutes tes pages en modifiant qu'à un seul endroit, augmentant ainsi la maintenabilité.
    Mais c'est sûr que ça dépend de ton besoin.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 39
    Points : 30
    Points
    30
    Par défaut
    Merci à tous les deux!

    La procédure executeTraitement() a effectivement résolu mon problème!


    J'ai pensé à utiliser une procédure globale mais ça modifiait la structure du code existant et l'organisation de mes formulaires.
    Donc: executeTraitement() reste la meilleure solution dans ce cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD15] Utiliser le Timer pour une procédure locale
    Par Invité dans le forum WinDev
    Réponses: 1
    Dernier message: 20/04/2010, 15h26
  2. [WD11] Procédure locale
    Par WDKyle dans le forum WinDev
    Réponses: 7
    Dernier message: 08/06/2009, 17h54
  3. [WD12] Surchage procédure locale
    Par Gaetch dans le forum WinDev
    Réponses: 1
    Dernier message: 20/02/2009, 10h18
  4. Réponses: 10
    Dernier message: 13/10/2008, 14h42
  5. Procédure locale
    Par PyMon dans le forum WinDev
    Réponses: 9
    Dernier message: 13/06/2008, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo