[VB6] Problème avec la croix pour fermer une application [Résolu]

Signaler
Messages postés
62
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
10 décembre 2005
-
Messages postés
62
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
10 décembre 2005
-
Bonjour,

j'ai un problème au niveau de mon programme VB. Mon projet est constitué de plusieurs forms dont 1 qui est le form principal (le menu). A partir du menu, on accède à d'autres forms. J'utilise pour cela dans le code les propriété ".Hide" et ".Show" des forms. Le problème est que si je clique sur la croix en haut à droite d'un form qui a été ouvert à partir du menu, le programme ne s'arrête pas comme avec le code "End", il ferme juste le form courant est le form Menu qui est caché (.Hide) est toujours ouvert mais on ne le voit pas, il faut aller dans le Gestionnaire des taches pour le fermer.

J'aimerais donc savoir comment faire pour que lorsque l'on clique sur la croix de la fenêtre ça ferme mon programme et pas seulement le form courant.

Merci d'avance.

14 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Je ne t'ai jamais dit d'utiliser l'instruction Load pour afficher les
fenêtres (cette fonction ne permet que de charger la feuille, et non de
l'afficher !).



Donc utilise la méthode Show pour afficher ta feuille, et la fonction Unload pour la fermer tout simplement.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
69
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
15 septembre 2005

Salut,

si tu utilises un .close sur l'évênement clic de la croix, essaye un .quit
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
et si tu es en VB 6, ce qui a l'air d'être le cas ;), utilise des
Unload(Form) plutôt que des .Hide pour fermer tes feuilles, tu verras,
ca marche tout de suite mieux ;)



En fait, lorsque tu fait un .Hide, ta fenêtre est juste masquée, mais
elle reste en mémoire. Du coup, si tu veux quitter ton prog, tu es
obligé de décharger toutes les feuilles de la mémoire : pas pratique !
(à moins que tu passe par un End, mais là, c'est brutal !).

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
Messages postés
630
Date d'inscription
samedi 15 février 2003
Statut
Modérateur
Dernière intervention
9 octobre 2011
1
Tu peux aussi travailler avec des MDI Child et Parent

Juste faites-le
Messages postés
630
Date d'inscription
samedi 15 février 2003
Statut
Modérateur
Dernière intervention
9 octobre 2011
1
Ou travailler avec des fenêtres en mode Modal

Juste faites-le
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
27
Ouais moi je suis assez partisan des unload, parce que modal et MDI Child, je sais pas trop ce que c'est!!



(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
Messages postés
630
Date d'inscription
samedi 15 février 2003
Statut
Modérateur
Dernière intervention
9 octobre 2011
1
Le mieux c'est une les fenêtres modales

Celle-ci sont par dessus toutes les autres et attendent une action particulière avant de disparaitre.

Sous .Net on a pas ce problème et l'avantage et qu'elle ne sature pas la RAM


Juste faites-le
Messages postés
62
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
10 décembre 2005

Alors tout d'abord je vous remercie pour toute vos réponses.



Pour commencer,en réponse à Stephane33, je suis débutant donc les MDI
Child et Parent, Modal, c'est comme si c'était du chinois pour moi
quoi...



Pour la réponse de omsylv, je ne sais pas comment configurer
l'événement de la croix dans le code, peux-tu me dire comment faire? Il
faut mettre Private Sub quoi????



Pour la réponse à Darksidious, j'ai essayé de mettre Unload(nom du form) mais ça ne fonctionne pas, "Valeur de propriété incorrect" qu'il me dit en surlignant de jaune la ligne du Unload. Pourrais-tu me dire comment faire exactement STP?



Merci
Messages postés
69
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
15 septembre 2005

Alors, tu mets ce code sur toutes tes frames



Private Sub NomduForm_Close()

DoCmd.Quit

End Sub



Cependant, c'est un peu brutal et des fois ça génère des erreurs. Le mieux pour toi je pense c'est de mettre



Private Sub NomduForm_Close()

Me.tonformmenu.Close

End Sub

Et là ça ferme uniquement ton menu (sauf si la fermeture de ton menu enclenche d'autres actions)
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Valeur de propriété incorrect ???



essaye avec Unload Form1 pour voir

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Heu... omsylv, on est en VB6, pas en .NET ou VBA... le .close n'existe pas pour les feuilles VB6 ![auteurdetail.aspx?ID=415535 ]

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
Messages postés
69
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
15 septembre 2005

Autant pour moi. Désolé !!
Messages postés
62
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
10 décembre 2005

Pour répondre à omsylv, j'ai essayé ce que tu as écrit:



Private Sub NomduForm_Close()
DoCmd.Quit
End Sub



Ca ne fonctionne pas. En faisant une éxécution
pas à pas, je me rend compte que lorsque l'on clique sur la croix, le
programme ne rentre jamais dans l'événement Private Sub NomduForm_Close() .



Pour répondre à DarkSidious, j'ai essayé Unload et Load avec la syntaxe que tu m'as dit. Alors pour le Unload ça fonctionne, le form disparait bien, mais ça ne fonctionne pas pour le Load,
le form en question n'apparait pas... Du coup je n'ai pas de message
d'erreur mais mon programme continuer de fonctionner sans que rien
n'apparaisse à l'écran...



A noter que lorsque l'on tape Load ou Unload il apparait ce qui doit suivre comme syntaxe qui est (object As object) ...
Messages postés
62
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
10 décembre 2005

Effectivement Dark Sidius, ça marche avec Unload et .Show . Merci beaucoup pour ton aide, ça fait plaisir.



++