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

Résolu
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005 - 27 juin 2005 à 17:42
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005 - 28 juin 2005 à 15:48
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
28 juin 2005 à 15:36
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
omsylv Messages postés 69 Date d'inscription lundi 3 janvier 2005 Statut Membre Dernière intervention 15 septembre 2005
27 juin 2005 à 17:47
Salut,

si tu utilises un .close sur l'évênement clic de la croix, essaye un .quit
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
27 juin 2005 à 17:57
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/
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
27 juin 2005 à 23:32
Tu peux aussi travailler avec des MDI Child et Parent

Juste faites-le
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
27 juin 2005 à 23:32
Ou travailler avec des fenêtres en mode Modal

Juste faites-le
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
28 juin 2005 à 09:01
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
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
28 juin 2005 à 09:50
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
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
28 juin 2005 à 11:44
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
0
omsylv Messages postés 69 Date d'inscription lundi 3 janvier 2005 Statut Membre Dernière intervention 15 septembre 2005
28 juin 2005 à 12:06
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)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
28 juin 2005 à 12:07
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/
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
28 juin 2005 à 12:31
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/
0
omsylv Messages postés 69 Date d'inscription lundi 3 janvier 2005 Statut Membre Dernière intervention 15 septembre 2005
28 juin 2005 à 13:46
Autant pour moi. Désolé !!
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
28 juin 2005 à 14:21
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) ...
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
28 juin 2005 à 15:48
Effectivement Dark Sidius, ça marche avec Unload et .Show . Merci beaucoup pour ton aide, ça fait plaisir.



++
0
Rejoignez-nous