IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB]Iconifier au lieu de fermer l'appli


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut [VB]Iconifier au lieu de fermer l'appli
    Bonjour la communauté,

    J'avais une tite question à laquelle je n'arrive pas à trouver de réponse.
    Je suis en train de reprendre une appli en VB d'un de mes stagiaires et je voudrais plutot que fermer l'application quand on clique sur la croix de fermeture, qu'elle s'iconifie dans le systray.

    Toutes les routines sont déjà faites pour l'iconification, mais je n'arrive pas à trouver l'évenement qui gère la fermeture.

    J'ai tout de même mis un événement dans le Form_unload de ma feuille principale, mais quenéni, elle se ferme quand même => l'événement de fermeture doit se trouver après.

    Pourriez-vous me dire où je peux trouver la sale bete ?

    Ciao

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Regarde du côté du QueryUnload

    Ex : le code suivant empêche l'utilisateur de fermer la fenêtre par la "petite croix" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        If UnloadMode <> vbFormCode Then
            cmdQuitter.DoClick
        End If
    End Sub
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    tu peux aussi faire un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
       Cancel = 1
       Ma_Procedure_Systray
    End Sub
    Cancel=1 empêche la fermeture, tu n'as plus qu'à diriger vers ta routine systray

  4. #4
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Salut,

    L'inconvénient dans ce que vous présentez comme solutions est que QuerryUnload est un événement qui apparaît lorsque l'on quitte (vraiment) l'application car on décharge les forms de la mémoire d'où une application impossible à quitter.

    Donc la solution de fixer le Cancel à 1 n'est pas intéressante...
    Il faut peut-être passer par une variable globale qui obtient une valeur à l'exécution de l'appli et qui en reçoit une autre à la fermeture avec un menu quitter ...

    Bon courage pour la suite

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  5. #5
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Voici le code que cela peut donner avec un menu Quitter sur la form principale.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Dim Autor_Quitter As Boolean 'Autorisation de quitter l'application
    Private Sub Form_Load()
     
        Autor_Quitter = False
     
    End Sub
     
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        If Not Autor_Quitter Then
            Cancel = 1
            ' Procédures de mises en systray
        End If
        'Ferme l'ensemble des forms ouvertes
        For Each f In Forms
            If f <> Me Then
                f.Unload
            End If
        Next
    End Sub
     
    Private Sub menu_Quitter_Click()
        Autor_Quitter = True
        Me.Unload
    End Sub
    Voili Voilou MAIS il y a certainement des améliorations à apporter à cela

    @peluche

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  6. #6
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Le paramètre UnLoadMode contient le mode de fermeture: par la petitre croix, par un menu ou bouton, etc.

    En cherchant dans l'aide, tu pourras trouver quelques codes exemple et les constantes à utiliser pour que ça marche comme tu le veux.

    Tu m'excuseras si je ne cherche pas pour toi, tu le retiendras mieux et je suis pressée. Y'a mon déjeuné qui brule!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    J'essaye vos soluces demain dans la journée et en tout cas, je vous remercie déjà pour votre aide.

    Ciao

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    Tu as regardé dans la FAQ ? J'ai pris ce code à cette p^lace là, il me semble la denière fois. Il y donne un lien vers Microsoft :

    http://support.microsoft.com/default...=KB;fr;q176085

    Amuse-toi bien...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Tiens, bah ça me dit quelque chose ce code C'est le code qu'a utilisé mon stagiaire pour gérer l'iconification de l'appli => ses sources gèrent pas mal.

    Donc moi, j'avais essayé de mettre ma msgbox dans form_unload, mais nada. Ma msgbox est bien affichée mais a priori, ce n'est pas la dernière routine qui est exécutée, a malgrès que je lui dise de ne pas exécuter le code qui unload toutes les forms dans cette routine, il les unload quand même et après.

    Allé, je vous dis ça demain, car j'ai pas vb sur mon pc perso (moi c'est php ) et donc je vais titiller un peu de vb demain.

    Ciao et merci.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut Iconifier au lieu de fermer l'appli
    Bonsoir,
    Tu places ce code dans un Module.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    Public Type NOTIFYICONDATA
       cbSize As Long
       hwnd As Long
       uId As Long
       uFlags As Long
       uCallBackMessage As Long
       hIcon As Long
       szTip As String * 64
       End Type
       Public nid As NOTIFYICONDATA
     
       'constantes requises par l'appel API Shell_NotifyIcon :
       Public Const NIM_ADD = &H0
       Public Const NIM_MODIFY = &H1
       Public Const NIM_DELETE = &H2
       Public Const NIF_MESSAGE = &H1
       Public Const NIF_ICON = &H2
       Public Const NIF_TIP = &H4
       Public Const WM_MOUSEMOVE = &H200
       Public Const WM_LBUTTONDOWN = &H201     'Button down
       Public Const WM_LBUTTONUP = &H202       'Button up
       Public Const WM_LBUTTONDBLCLK = &H203   'Double-click
       Public Const WM_RBUTTONDOWN = &H204     'Button down
       Public Const WM_RBUTTONUP = &H205       'Button up
       Public Const WM_RBUTTONDBLCLK = &H206   'Double-click
       Public Declare Function SetForegroundWindow Lib "user32" _
       (ByVal hwnd As Long) As Long
       Public Declare Function Shell_NotifyIcon Lib "shell32" _
       Alias "Shell_NotifyIconA" _
       (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
     
    Ce code dans la Form
     
    Private Sub Form_Load()
     'la forme doit être entièrement visible avant d'appeler Shell_NotifyIcon
       Me.Show
       Me.Refresh
       With nid
        .cbSize = Len(nid)
        .hwnd = Me.hwnd
        .uId = vbNull
        .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        .uCallBackMessage = WM_MOUSEMOVE
        .hIcon = Me.Icon
        .szTip = "Your ToolTip" & vbNullChar
       End With
       Shell_NotifyIcon NIM_ADD, nid
       End Sub
     
       Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
       'cette procédure reçoit les rappels de l'icône de barre d'état système.
       Dim Result As Long
       Dim msg As Long
        'the value of X will vary depending upon the scalemode setting
        If Me.ScaleMode = vbPixels Then
         msg = X
        Else
         msg = X / Screen.TwipsPerPixelX
        End If
        Select Case msg
         Case WM_LBUTTONUP                  '514 restore form window
          Me.WindowState = vbNormal
          Result = SetForegroundWindow(Me.hwnd)
          Me.Show
          Case WM_LBUTTONDBLCLK     '515 restore form window
          Me.WindowState = vbNormal
          Result = SetForegroundWindow(Me.hwnd)
          Me.Show
         Case WM_RBUTTONUP                  '517 display popup menu
          Result = SetForegroundWindow(Me.hwnd)
        End Select
       End Sub
     
     Private Sub Form_Resize()
        'Nécessaire pour assurer que la fenêtre réduite soit masquée
        If Me.WindowState = vbMinimized Then Me.Hide
       End Sub
     
       Private Sub Form_Unload(Cancel As Integer)
        'cela supprime l'icône de la barre d'état système
        Shell_NotifyIcon NIM_DELETE, nid
       End Sub

    Quand tu clique sur réduire , la Form se place en icone dans la systrait prè de l'horloge (c'est licone de la feuille qui apparait) , il suffit de cliquer dessus pour restaurer

    jpleroisse

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 118
    Points : 58
    Points
    58
    Par défaut
    serait - il possible d utiliser cela avec access?

    j ai essayer d inserer ce code dans mon projet access mais il m indique une erreur de compilation

    " Me.Show inconnu "

    Pareil pour "Me.icon"

Discussions similaires

  1. croix UserForm : arreter l'execution au lieu de fermer l'UserForm
    Par manouk dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/11/2008, 14h36
  2. Fermer l'appli. pour update
    Par 2nis dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/04/2008, 22h49
  3. fermer une appli ts les jours à la même heure
    Par ras french dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 03/01/2007, 19h25
  4. Fermer mon appli
    Par todac dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/12/2006, 18h35
  5. Fermer une appli DOS à l'extinction du pc
    Par batmat86 dans le forum Windows
    Réponses: 10
    Dernier message: 01/03/2006, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo