Renseignement sur les MDI mères et filles [Résolu]

Signaler
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008
-
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008
-
Bonjour à tous, je me permets de vous demander de l'aide car je reste baba lol

Je suis en train de développer un projet en VB 6.0 qui utilise des MDI mères et filles.

Lorsque je veux fermer une feuilles, j'utilise soit le menu ou bien l'événement Unload. Dans le menu il n'y a pas de problème, ma fermeture de programme fonctionne à merveille. Mais dans l'événement Unload, le même code ne fonctionne pas ? Pourquoi ?

Ce code concerne une MsgBox qui demande si on est sûr de quitter oui ou non le programme !

Voici le code :

Dim int_reponse_msgbox As Integer 'variable qui sert à recevoir ce que renvoie la MsgBox complexe

int_reponse_msgbox = MsgBox("Etes-vous sûr de vouloir quitter l'application ?", vbYesNo + vbExclamation, "Quitter")
       
If int_reponse_msgbox = vbYes Then End

Je ne comprend pas pourquoi cela ne fonctionne pas !

Si vous saviez m'aider merci d'avance à tous

J-il

20 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Salut,



Dans le menu quitter, c'est un menu perso, donc l'événement ne fait rien en soit.

L'événement Unload par contre est déclenché lorsque la fenêtre se ferme. Il est donc trop tard pour faire quoi que ce soit : elle se fermera de toute façon !

Il faut placer ton code dans l'événement QueryUnload qui lui peut être annulé par le paramètre Cancel :

Dim int_reponse_msgbox As Integer 'variable qui sert à recevoir ce que renvoie la MsgBox complexe

int_reponse_msgbox = MsgBox("Etes-vous sûr de vouloir quitter l'application ?", vbYesNo + vbExclamation, "Quitter")
       
If int_reponse_msgbox = vbYes Then
    End 'pas propre ! A remplacer par un Unload(me) !
else
    Cancel = true
end if

______________________________________
DarK Sidious
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Salut,
Dans le Unload je dirais qu'il faut que tu mettes a jour la variable Cancel selon le choix de la msgbox
Et d'ailleurs qu'est ce qui ne fonctionne pas?

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Salut,

Lol oui c'est sûr que savoir ce qui ne fonctionne pas pourrais nous aider à résoudre le problème...
______________________________________
DarK Sidious
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Merci à vous de prendre attention à mon problème...

Ce qui ne fonctionne pas c'est que lorsque je clique sur la croix rouge de ma MDI, il m'affiche ma message box avec le oui et non et que lorsque je fais non il quitter quand même le programme...

Ce que je ne comprend pas c'est que ce code fonctionne super bien dans le menu quitter donc si je dis non il ferme rien et si je dis oui il quitter biensûr !

Voila ce qu'il se passe et je ne comprends pas pourquoi ?

Merci d'avance les gars

J-il
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Pour mieux t'aider, il faudrait voir le code que tu as mis dans le Form_Unload ou QueryUnload, et celui dans le menu Quitter

MPi
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Merci Darksidious, je vais tester mon code dans le QueryUnload de la MDI

Je te dis quoi !
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Salut,

Ben tu me donne cent balles et un mars et ca ira

______________________________________
DarK Sidious
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Et bien voilà, cela fonctionne à merveille au fait j'avais déjà essayé ce que tu m'a filé Darksidisous mais je n'avais pas mis le Cancel = True

Donc voici mon code final et dans l'événement Unload de la MDI




Dim int_reponse_msgbox As Integer 'variable qui sert à recevoir ce que renvoie la MsgBox complexe


int_reponse_msgbox = MsgBox("Etes-vous sûr de vouloir quitter l'application ?", vbYesNo + vbExclamation, "Quitter")
       
If int_reponse_msgbox = vbYes Then


    Unload Me


Else


    Cancel = True


End If

Je te remercie vraiment c'est parfois super bête mais on peut chercher lorsqu'on est plus ou moins novice dans ce domaine.

Merci encore à tous et surtout à toi Darksidisous

J-il
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Salut,

Tiens c'est marrant cà, j'avais jamais remarqué que l'événement Unload de la MDI possèdait un paramètre cancel !
______________________________________
DarK Sidious
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Re Darksidisous,

Dis tant que j'y suis j'ai aussi une petite question sur les InputBox !

Je les utilisent lors de recherche, donc quand je recherche une personne si j'entre rien et que je clique sur ok, il me dit bien que je n'ai pas entré quelque chose dans la boite. Mais comment gère le bouton annuler de cette InputBox ????

Moi j'aimerais savoir si c'est possible que lorsque je fais annuler, il me ferme ma feuille ?

Si oui comment dois-je plus ou moins procéder ??

Merci d'avance
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Salut,

Il suffit de tester la valeur de retour : si chaîne vide("") alors click sur Ok, si vbNullString alors click sur annuler, ou un truc dans ce genre.
______________________________________
DarK Sidious
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Pour le moement j'ai ceci :

str_initiale = InputBox("Entrez la première lettre du nom du professeur ou son nom complet :" + Chr(13) + Chr(13) _
                             + Chr(13) + "Exemple : dup pour dupont", "Recherche du professeur")


If str_initiale = "" Then


        MsgBox "Aucun nom de professeur encodé !", , "Pas de nom encodé !"
        Call Form_Activate
        Exit Sub


End If

Donc la quand je n'entre rien et que je clique sur Ok ben il m'envoie bien cette MsgBox mais pour annuler je trouve pas !
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Salut,

If str_initiale = "" Then

        MsgBox "Aucun nom de professeur encodé !", , "Pas de nom encodé !"
        Call Form_Activate
        Exit Sub

else if str_initiale = vbNullString Then

    'click sur le bouton annuler

End If

______________________________________
DarK Sidious
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Salut,

Il n'y a pas moyen il me détecte toujours la première option ! C'est-à-dire Aucun nom de professeur encodé.

Je trouve ça bête qu'on ne puisse pas configurer plus facilement les deux boutons !!!!
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Salut,

Arf, c'est peut-être l'inverse alors, je sais plus, fais une recherche sur le forum, la question a déjà été posée !

Perso, je n'utilise plus l'input box : je le trouve bien chiant à utiliser que ce soit au niveau du développeur (il n'est pas personnalisable !) ou du côté de l'utilisateur (y'a très peu de logiciel qui affiche un input box ! Bien souvent, il s'agit de boîte d'option avec plusieurs textbox et des options button, etc.).
______________________________________
DarK Sidious
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Salut, je ne trouve toujours rien sur l'inputBox grrrrrrrrrrrrr jte dis pas !!!!!!

Si quelqu'un à une solution.................
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Salut,

solution dénichée ici : http://www.vbfrance.com/codes/DETECTER-CANCEL-SUR-INPUTBOX_31308.aspx

PS:
DarkSidioux , tu gardes les cent balles mais on partage le mars

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Salut, chaibat05, solution testée mais ne convient pas à ce que j'aimerais, sinon cela j'aurais pu le faire hihihihi je suis tout de même pas aussi nul lol
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Salut,


Moi qui n' ai eu recours aux InputBox qu' une ou deux fois dans ma vie,
je préconise la privatisation de ce service D'  autant plus que ça ne coute rien:
Une feuille,une TextBox et deux bouttons.Et l' acceuil et le service après vente
sont meilleurs.


<hr />

I LIKE TO BE HERE WHEN I CAN


<hr />
Messages postés
109
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
9 septembre 2008

Lol tu as bien raison chaibat je commence à penser que je vais me faire ma propre InputBox qui sera beaucoup plus programmable en plus !

Merci tout de même