Onyl
Messages postés4Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention27 avril 2007
-
26 avril 2007 à 22:49
Onyl
Messages postés4Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention27 avril 2007
-
27 avril 2007 à 19:58
Bonjour !
Et oui encore une question d'un nouveau !
J'ai actuellement un petit souci avec un programme sous VB6 qui est le suivant : lorsque je clique en haut à droite, dans une userform, sur la croix classique de windows pour fermer mon programme, il se ferme bien mais il reste "actif" dans le gestionnaire de programme et m'empêche de quitter correctement windaube...
J'ai tenté de chercher ici une solution (genre enlever la croix ca serait pô mal mais le peu que j'ai trouvé, en autre un code de Mortalino, ne fonctionne que sous vba...).
Quelqu'un aurait-il une version du code de Mortalino pour vb ou une idée pour résoudre cet odieux problème ?
En vous remerkiant par avance, veuillez agréer,...
Onyl
Messages postés4Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention27 avril 2007 27 avril 2007 à 15:32
bon mon petit Onyl, tu réfléchis 30s et tu vois que QueryUnload existe pas pour une Userform sous vb6 alors tu écris ça :
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
End Sub
et ça marche !
(effectivement on peux rajouter un message pour prévenir l'utilisateur qu'il doit quitter en cliquant sur un bouton quitter du programme !)
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 26 avril 2007 à 22:55
Salut,
Pour enlever la croix, voici :
' Déclare fonction pour désactiver la croix systèm d'une Frm
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 MF_BYCOMMAND = &H0
Public Const SC_CLOSE = &HF060
' **********************************************************
Public Sub SetSystemCrossOff(MyFrame As Form)
Dim hMenu As Long
' Retire la croix fermer de la fenêtre
hMenu = GetSystemMenu(MyFrame.hwnd, 0)
Call DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
End Sub
Utilisation :
' Appelle de la function qui désactive la croix
SetSystemCrossOff Me
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 26 avril 2007 à 23:32
Sans enlever la croix, tu peux utiliser
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
UnloadMode sera 0 si tu cliques sur la croix, autrement 1
MPi
Vous n’avez pas trouvé la réponse que vous recherchez ?
Onyl
Messages postés4Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention27 avril 2007 27 avril 2007 à 15:14
Tout d'abord merci pour vos réponses !
Bon y'a rien qui marche avec mon code car le problème je pense est qu'il vient de vba (et oui j'avais écrit userform ) !
@Mortalino : ton code marche dans une form normale mais en fait j'ai fait le code sous vba au départ parce que je pensais devoir me
servir d'une feuille Excel pour des données... En fait j'ai réussi à
tout intègrer dans vba mais ensuite j'ai importé mes userforms sous vb car mon but
est d'avoir un programme en .exe puis de créer un fichier setup (ça ça
marche). Donc ton code marche malheureusement pas avec une userform importée sous vb6.
@Exploreur : la par contre ton code semble pas marcher, je le copie au bon endroit (dans une form vb6) et direct les lignes commençant par Public se mettent en rouge (!) et ensuite j'ai un message d'erreur lorsque je tente d'exécuter (Erreur de compilation : des constantes, chaînes de longueur fixe,... ne sont pas autorisées comme membre public de modules objet."). J'appuie sur mon "semble" car le problème vient surement de moi !
@Mpi : même problème que pour le code de Mortalino je pense !
Donc voilà, est ce que le mieux est de tout refaire sous vb6 pour que les problèmes s'annulent ou est ce qu'il y a moyen de convertir mes userforms importées en form classiques où un bon code marche ?
Encore merci, désolé pour mon manque de connaissances en vb !
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 27 avril 2007 à 19:41
Attention /!\ UserForm VBA Office
Si tu déploies une exécutable (donc avec VB) contenant des UserForms (donc des contrôles de la suite Office) il faut Obligatoirement que le PC sur lequel tu installes ton exe aie la suite Office.
Pourquoi ?
--> licence Office. (et oui, vu que c'est payant, tu ne peux pas redistribuer comme ça un contrôle ayant un copyright)
Renseigne toi avant
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~