FERMER l'Appli de manière efficace / et sans plantage, AÏEAÏEAÏE!
jekifvb6
Messages postés156Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention18 septembre 2006
-
7 sept. 2005 à 16:49
jekifvb6
Messages postés156Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention18 septembre 2006
-
8 sept. 2005 à 17:10
Bonjour/bonsoir,
mon problème est que je n'arrive pas à fermer mon programme.
Celui-ci contient plusieurs form (pas mdi) dont la principale et pas de barre windows.
Cad la fermeture complète du programme doit s'effectuer sur le click d'un button.
Mais jusqu'ici à chaque fois que je crée l'.exe et que j'essaye de fermer mon aplli, le programme plante et doit fermer.
J'ai pourtant bien cherché sur tout le site, ce sujet a déjà été abordé
des milliers de fois, et je n'arrive pas à faire fonctionner les
differentes solutions proposée... comme par exemple:
- End dans le query_unload
- Dim F As Form
For Each F In Forms
If F.Name <> Me.Name Then Unload F
Next
- Unload Me
- ect.
J'aurai vraiment besoin d'un coup de pouce astucieux. Demandez moi si vous avez besoin de précision sur l'appli en question!
/
g.
A voir également:
FERMER l'Appli de manière efficace / et sans plantage, AÏEAÏEAÏE!
cs_franckydeluka
Messages postés228Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention 4 janvier 20081 7 sept. 2005 à 17:09
sur chaque feuille tu as un Form_Unload
tu met l'instruction End sur chaque feuille il n'y a pas de raison que ça marche pas.
pense aussi à détruire tous tes objets et fermer toutes tes connections pour que ce soit plus propre.
peut etre le mieux c'est de faire un appel de fonction qui détruise tout ce qu'il faut et fasse un End (ce que tu as du mettre dans ton bouton)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 7 sept. 2005 à 17:17
désolé mais End ferme brutalement.
c'est bien beau, mais c'est pas propre. pour peu que tu aies des contrôles spécifiques ou des dll liées, le End peut avoir des répercutions regrettables.
si c'est une appli "basique", donc sans dépendance, alors UN SEUL End suffit. pas à chaque Form...
ta solution est la bonne, sauf qu'il faut remplacer Dim par Set.
puis Set F = Nothing avant le dernier UnLoad
si il y a encore des problèmes, c'est que tu as des boucles qui tournent, dans quel cas il faut les arréter avant la fin.
(exemple, un booléen par Form, il change de valeur au Query, et dans la boucle, s'il change, Exit boucle...)
cs_franckydeluka
Messages postés228Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention 4 janvier 20081 7 sept. 2005 à 17:45
C'est sûr que pour une solution brutale le End c'est même radical. bien sur c'est pas le mieux je suis d'accord avec toi.
Le End dans chaque form c'est afin que n'importe où que tu te trouve dans le prog si tu ferme une fenetre tu quitte tout le prog. (si jamais ne pas le mettre dans les form optionnelles). mais c'est peut etre pas ça que jekifvb6 voulait.
Afin de fermer toutes les connections (et reférence) proprement le mieux il est vrai c'est de ne pas utiliser le End mais que lorsque tu click sur ton bouton quitter tu unload toutes les form ouvertes.
Zlub
Messages postés809Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention29 septembre 20108 7 sept. 2005 à 21:42
Salut Jekifvb6,
Je confirme pour les raisons citées ci-dessus : l'utilisation de End n'est pas conseillée... sauf pour tres simple appli.
Et si tu execute en pas à pas ton code, tu n'arrives pas à trouver sur
quelle instruction elle plante ? Essais de mettre des point d'arrêts
sur les points qui te semblent critiques et vois se qui se passe quand
tu fermes ...
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 8 sept. 2005 à 15:42
on est bien d'accord que "le bouton qui sert de croix", c'est le vrai bouton de fermeture, pas un bouton que tu as fait...
tu peux nous copier les codes que tu as mis pour ces évènements stp..
Private Sub Form_LostFocus()
'
End Sub
'
'
Private Sub Form_Paint()
'
End Sub
'
'
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'
End Sub
'
'
Private Sub Form_Terminate()
'
End Sub
'
'
Private Sub Form_Unload(Cancel As Integer)
'
End Sub