morickno
Messages postés117Date d'inscriptionvendredi 22 avril 2005StatutMembreDernière intervention26 juin 2007
-
10 mai 2005 à 14:30
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 2006
-
10 mai 2005 à 16:34
J'aimerai savoir comment enlever la croix de femeture de fenetre qui est en haut à droite de chaque fenetre oubien de permettre de ne pas fermer une fenetre en appuyant sur cette croix.
est-ce possible? si oui comment?
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 10 mai 2005 à 15:06
Salut ;O)
Première méthode : détecter que l'utilisateur ferme le formulaire via la croix
Pour ce faire, il existe l'événement UserForm_QueryClose Le paramètre CloseMode retourne un code identifiant la façon dont le formulaire est fermé.
Code 0 : fermeture via le Control Menu (la croix) et aussi ALT-F4
Code 1 : fermeture via Unload
Code 2 : fermeture par Windows, le système s'arrête...
Code 3 : fermeture via le Gestionnaire des tâches
Donc dans ton cas, tu peux mettre ce code dans cet événement.
Ce qui empêchera la fermeture via la croix ou ALT-F4
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode 0 Then Cancel -1
End Sub
Deuxième méthode : enlever la croix d'un formulaire.
Cette méthode est plus lourde à mettre en oeuvre et à comprendre car l'utilisation d'API est requise.
Fais un copier-coller du code ci-dessous dans un UserForm
Private Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize()
Dim hWnd As Long
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
End Sub
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 10 mai 2005 à 15:10
Bonjour,
Private Sub Quitter_Click()
End
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
MsgBox "Vous devez utiliser le bouton Quitter !", vbInformation, "Message"
Cancel = True
End Sub
Ne pas oublier de placer un bouton quitter, et surtout ne pas utiliser Unload Me dans la procédure du bouton quitter, sinon impossible de quiitter.Utiliser "End"
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 10 mai 2005 à 15:22
Re bonjour >Guy , comme quoi on apprend tous les jours, je ne connaissais pas cet Appi.
Enfin disons que je ne les utilise pas car j'arrive rarrement à m'en servir.Comme les fonctions d'ailleurs.
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 10 mai 2005 à 15:22
jpleroisse >> il suffit de tester la valeur deCloseMode pour savoir la façon dont le formulaire est fermé (voir mon message). Utiliser End n'est jamais conseillé et n'est pas propre.
Si je corrige ton code :
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 then
MsgBox "Vous devez utiliser le bouton Quitter !", vbInformation, "Message"
Cancel = True
End If
End Sub
Guy
Vous n’avez pas trouvé la réponse que vous recherchez ?