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 :

Menu contextuel


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut Menu contextuel
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TABLE_aper_hab=nLigne
    SI COL_Etat="G" ALORS RETOUR
    // Change COL_Etat
    OuvreMenuContextuel(MENU_MenuContextuel2)
    // Rafraichissement de la table, ne change rien
    TableAffiche(TABLE_aper_hab,taCourantPremier)
    //Ici COL_Etat n'a pas changé!
    VisuEtCalculLignesActives()
    Je modifie le contenu de COL_Etat de ma table, dans le menu contextuel lié à cette table.
    Mais quand je VisuEtCalculLignesActives(), COL_Etat n'a pas changé.
    (En fait il change de contenu après quand on entre de nouveau dans la table).
    Il semble qie el menucontxtuel soit ouvert dasn un autre thread !
    J'ai ajouter TableAffiche() mais cela ne change pas.

    Ce que j'ai pu vérifier: L'appel du menu contextuel exécute les traitement sortie de ligne, de table, puis entrée de table et de ligne.

    Comment puis-je faire pour continuer le traitement en sortie de OuvreMenuContextuel avec la valeur de COL_Etat à jour?

    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    Bonjour,

    si je remplace
    OuvreMenuContextuel(MENU_MenuContextuel2)
    par
    OuvrePopUpl(MonMenu)
    avec le même code, cela fonctionne.

    Merci

  3. #3
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Hello..

    C'est parce que cette fonction est bloquante jusqu'à ce que le menu contextuel soit fermé.
    donc le reste de ton code ne s'exécutait pas et ta nouvelle valeur n'étais donc pas mise à jour
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    Bonjour,

    c'est assez bizarre, car la valeur est mise à jour mais plus tard, pas en sortie du menu contextuel. Plus tard, quand on fait une boucle de lecture sur la table la valeur à bien été mise à jour!
    Si je demande un suivi de la colonne modifié dans le debugger, la valeur ne change qu'au début de ma boucle de calcul, et non pas quand le menu contextuel modifie la valeur de la colonne!

    Merci

  5. #5
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    quel genre de table c'est..? une table mémoire, une table rempli par programmation??

    Car tu peux peut être essayé un ecranversfichier ou ecranverssource
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    C'est une table mémoire, rempli par programmation.
    J'ai aussi essayé de forcer un temps d'attente pour voir si la mise à jour devenais effective, mais cela n'a rien changer.

  7. #7
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Citation Envoyé par no_me_entero Voir le message
    C'est une table mémoire, rempli par programmation.
    Je vais surement dire une connerie mais si ta table est rempli par programmation il faut peut être que tu la ré-initialise après tes changements, donc il faut la remplir à nouveau par programmation?
    Enfin je crois?
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    Réellement non, je modifie le contenu d'une cellule, et la modif est bien dans la table. Seulement, la modif elle en fait comme retardée.
    Avec la fenêtre Popup pas de problème la modif est directe.

  9. #9
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Je ne crois pas que c'est un problème de thread mais un problème d'événement. Le refresh de la table est envoyé comme prochain événement, tu dois donc finir l'événement en cours pour que ça se fasse. Le traitrement doit être différent en utilisant une fênetre ce qui fait que ton refresh se fait tout de suite. Je crois donc que ton contenu ne sera pas modifier dans ta fonction, tu dois utiliser un popup ou peut-être avec un Multitache().
    «Un problème bien défini est un problème à moitié résolu.»

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    Bonsoir,

    Est-il possible de forcer l'attente de la fin de l'exécution du menu contextuel?
    Cela permettrai de confirmer que le problème vient bien de là, car c'est pas facile de le voire en debuggant car il réalise sortie de la ligne, de la table puis entrée dans la table et la ligne à la fin du menu contextuel.

    Merci

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Ce serait bien de nous donner le code du menu contextuel qui réalise la mise à jour.

    Citation Envoyé par klbsjpolp Voir le message
    Je ne crois pas que c'est un problème de thread mais un problème d'événement. Le refresh de la table est envoyé comme prochain événement, tu dois donc finir l'événement en cours pour que ça se fasse. [...]
    Je crois donc que ton contenu ne sera pas modifier dans ta fonction, tu dois utiliser un popup ou peut-être avec un Multitache()
    Si Multitache(-1) ne permet pas de purger la pile des messages en attente, alors pour en avoir le coeur net, tu pourrais terminer le code du menu contextuel par l'envoi d'un message Windows (avec la fonction PostMessage) vers le champ table, sur lequel tu auras au préalable programmé l'interception de l'événement pour actualiser la table.
    _

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    Bonsoir,

    le code est simple, sur election de l'option du menu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TABLE_aper_hab.COL_Etat="F"

  13. #13
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Une proposition pour ton code avec la fonction Multitâche(-1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    TABLE_aper_hab=nLigne
    SI COL_Etat="G" ALORS RETOUR
    // Change COL_Etat
    OuvreMenuContextuel(MENU_MenuContextuel2)
     
    // forcer Windows à gérer les événements en attente
    Multitâche(-1)
     
    // Rafraichir la table (en espérant que ça aura changé !)
    TableAffiche(TABLE_aper_hab,taCourantPremier)
    //
    VisuEtCalculLignesActives()

Discussions similaires

  1. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/04/2009, 12h23
  2. Visibilité commande dans un Menu contextuel
    Par Hamdi dans le forum IHM
    Réponses: 3
    Dernier message: 20/01/2005, 12h29
  3. [Plugin] Ajouter une option au menu contextuel ?
    Par relivio dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 22/03/2004, 16h18
  4. [VB6] menu contextuel dynamique
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/07/2003, 11h53
  5. [VB6] menu contextuel sur clique droit souris
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/07/2003, 11h07

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