Comment court-circuiter Form_Unload ?

Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Je suis petit nouveau en visual basic.
J'ai besoin d'aide !

J'ai bien regardé sur le site et je n'ai trouvé aucune réponse à mon problème.

Dans un programme MDI, dans une des form, je peux être amené à cliquer sur la croix de fermeture de fenêtre.
L'événement Form_Unload se déclenche donc.
Dans cette procédire, par un test, je constate alors que je ne veux plus quitter cette form. Comment faire ?

Merci d'avance à toutes les braves âmes qui voudront bien m'aider.

jyd

8 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonsoir,

'//Désactives la croix de fermeture
'//Déclaration dans un module
 Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
 Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
 Public Const SC_CLOSE = &HF060
 Public Const MF_BYCOMMAND = 0


'//Dans la procédure où tu veux désactiver la croix :
    - En général dans Form_Load
   
    Dim hSysMenu As Long
    hSysMenu = GetSystemMenu(Me.hwnd, 0)
    DeleteMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND


    Et rien dans Form_Unload
   
   Tu ne pourras décharger la fenêtre que par code.
   'Remarque:  opération irréversible; tu ne pouurras plus activer la croix

chaibat
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

Non, pas possible de faire cela.


Je t'explique mon problème par un exemple.


Par Form_Unload, je propose à l'utilisateur de quitter l'application en le faisant cliquer sur la croix dans le coin supérieur droit.


Mais avant de réellement quitter l'application, je prppose à cet utilisateur de copier un fichier avant de quitter l'application. Et si au contraire, il ne veut pas quitter l'appli parce que le fichier n'est pas prêt, je voudrais qu'il retourne immédiuatement dans l'appli en cours.


Or, lorsque l'on génère Form_Unload, il n'est plus possible de revenir dans l'appli... L'abandon du programme semble automatique...


A l'aide, svp.


 


 






jyd
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,


Toi tu cherche l'événement QueryUnload d'une feuille


Cet événement apparait avant un Unload d'une feuille  et permet de l'annuler.


Essaie le code suivant.








Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 
Dim rep As VbMsgBoxResult 
    rep =   MsgBox ("Voulez vous quitter?", vbQuestion Or vbYesNo) 
    If rep  = vbNo Then Cancel = 1 
End Sub 

 







<small> Coloration syntaxique automatique [AFCK]</small>

       









@+, Julien
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Si tu peux abandonner la fermeture de la feuille en mettant le parametre Cancel à TRUE

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonjour,
Justement je t' ai proposé la solution de désactiver la croix de fermeture,
 pour éviter toutes ces complications.
Au lieu de proposer à l' utilisateur de quitter en cliquant sur X , ajoutes dans ton Formulaire un boutton "Quitter" et c' est dans cmdQuitter_Click que tu vas gérer
les conditions de la fermeture de la feuille.
>Si ces conditions sont favorables pour quitter l' application tu mets End.
(ou i tu veux simplement fermer la fenêtre tu mets ; Unload MonForm)
>Sinon tu ne fermes pas et tu entreprends autre chose ...
 
Ainsi tu n' auras pas à utiliser Form_Unload ni Form_QueryUnload.

chaibat
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
salut,
j'ai bouclé (clos) le topic pendant mon temps de lecture et supprimé les messages idiots (il y avait de quoi faire).
non pas que le bar soit la boîte à débrits mais il est vrai que j'y "tolère" plus facilement ce genre d'équarts. (quoi que je l'ai déjà dit mais çà ressemble plus à une chasse au points qu'une aide réelle. c'est pas le compteur de visites que vous gonflez mais votre égo. bien joué les jeuns....)
donc svp ne sabottez (spammez) pas les topics qui sont là avant tout non seulement pour répondre au principal intéressé mais aussi pour les futurs lecteurs.
on se plaind (moi le premier) que le forum est plus utilisé pour poster que pour être lu, c'est ce genre de topic qui donnerait raison aux fainéants.

quant à jytest, tu n'y es pour rien dans cet exception estivale mais merci de rester poli!!! tout au moins si tu veux avoir un jour des réponses même sur des problèmes sérieux!!!
(désolé de cette opinion sur ton problème mais justement, une recherche de 5minutes nous aurait fait gagner à tous un précieux temps)

je compte sur toi pour valider la ou les réponses te convenant.
si tu n'as pas tes réponse, n'hésite pas à reformuler ta question

topic débloqué. merci de ne laisser votre trace que pour des mots utiles, c'est pas la fête à neuneu ici !!!
(et ramasser vos miettes, j'avoue ne pas avoir que çà à faire...)

PCPT   [AFCK]

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Est-ce qu' il m' est permis de répondre ?
J' ai l' impression que c' est nous qui sont court-circuités.
Jusqu' à ce qu' il intervient, tous nos post étaient dans le sujet.
Il n' y avait pas un seul sans une info utile.
C 'est vrai que de temps en temps on s' echagaient quelques
plaisanteries mais c' était leger et parce qu' on se connait.
C' est vrai qu' on a forcé sur le compteur.Je m' excuse au nom de tous.
Bonne soirée à toi et encore une fois toutes nos excuses. 
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
pas un post sans infos utiles? sur 5pages, permet moi d'en douter!
pas grave de déborder mais même si vous avez l'impression que le forum est mort ces temps-ci (et c'est le cas), ce n'est pas une raison pour remplacer les centaines de milliers de membres absent dans la même journée sur le même topic ;)

c'est aussi parceque c'est calme que j'ai supprimé et fait le tri. un moins plus tard et c'est le topic qui saute...  dommage quand il y a quelques réponses constructives non?...

bonne soirée à tous
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp