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

VB 6 et antérieur Discussion :

Problème de fenêtre modal qui ne stoppe pas le code en arrière plan


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Problème de fenêtre modal qui ne stoppe pas le code en arrière plan
    Bonjour,
    J'essaye dans mon programme de faire apparaître une fenêtre "modal". Voici un extrait du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    recupPrivilege 'Procédure simple
    frm_Delegation.Show 1 'Appel de la fenêtre *
    Load Frm_Mail 'Form suivante
    J'essaye donc d'ouvrir la fentre en seconde ligne (*) et le problème c'est que le code se poursuit après que les évènements dans le Form_load() de celle ci, soient terminés, et charge la fenêtre suivant (Frm_Mail). Note: le code ci dessus se déroule dans un module.

    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Et si tu chargeais Frm_Mail dans l'évenement activate ou load de frm_Delegation ?
    Scuse me while I kiss the sky ! Jimi Hendrix

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    C'est pas si simple, j'ai simplifié le code mais il y a des tests avant et après. De plus même si le Load Frm_Mail serait chargé dans la fenetre que je veux modale, le code continuerait après encore.

  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Fais un msgbox juste avant la ligne Je suis certain que le messagebox ne sera declenché que quand la feuille frmdelegation sera fermée ou masquée (soit unload me soit me.hide)

    Si la feuill frm_mail se charge avant le msgbox , c'est que le code dans frmdelegation reference la feuille form_mail quelque part, impliquant son chargement
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Non la msgbox s'affiche, et je suis certain qu'aucune référence n'est faite à frm_mail dans le code de frmdelegation.

    Ne serait-ce pas du à des propriétés de la feuille delegation (MDI child, ou quelque chose dans ce genre?)

    edit:Oui c'était bien une histoire de mdi child à vrai...

  6. #6
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Citation Envoyé par Sebcaen
    J'essaye donc d'ouvrir la fentre en seconde ligne (*) et le problème c'est que le code se poursuit après que les évènements dans le Form_load() de celle ci, soient terminés, et charge la fenêtre suivant (Frm_Mail).
    Tout a fait normal, car ne lui demande que d'afficher frm_Delegation et une fois charger tu lui demande de passer a l'instruction suivante, ce qu'il fait.

    Si je devine bien, tu voudrais arreter l'execution du code pour executer des fonctions (ou procedures) de frm_Delegation avant de passer a Frm_Mail ?? si tel est le cas alors voila une procedure qui poura resoudre ton probleme.

    tu declares une variable (public).
    tu lui donnes une valeur
    tu modifis ca valeur a la fin des taches de frm_Delegation
    ensuite dans ton code (module) tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    recupPrivilege 'Procédure simple
    frm_Delegation.Show 1 'Appel de la fenêtre *
    while valeur_Non_Changer
        DoEvents
    wend
    Load Frm_Mail 'Form suivante
    Ca devrais attendre la fin de l'execution des taches de frm_Delegation ensuite continuer a executer la suite du code (charger Frm_Mail)
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  7. #7
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Fais un petit exemple
    Dans un projet tu ajoutes deux feilles et un module
    dans le module colle le code ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub main()
      Form1.Show 1 ' on peut utiliser la constante de vb VbModal à la place de 1
      MsgBox "ok"
      Form2.Show
    End Sub
    Dans les propriétés de ton projet, met Sub Main comme objet de démarrage
    Quand tu executes, le messagebox ne s'affichera que lorsque form1 sera fermée, pas avant

    Maintenant, modife la sub main comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub main()
      Form1.Show 
      MsgBox "ok"
      Form2.Show
    End Sub
    Dans ce cas, la form1 s'affiche et le messagebox est declenché en même temps.

    la deuxieme feuille s'affichera apres fermeture du messagebox
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  8. #8
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Oups , je n'avais pas vu ton edit
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/08/2011, 10h30
  2. Réponses: 10
    Dernier message: 05/02/2007, 17h07
  3. Réponses: 9
    Dernier message: 22/09/2006, 17h31
  4. Problème avec un div qui n'est pas pris en compte
    Par boss_gama dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 25/07/2006, 16h32
  5. Réponses: 8
    Dernier message: 26/01/2006, 14h47

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