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

IHM Discussion :

Comment empecher la fermeture via les menus windows [AC-2003]


Sujet :

IHM

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 164
    Points
    164
    Par défaut Comment empecher la fermeture via les menus windows
    Bonjour

    comment puis je controler le fait qu'un utilisateur ferme l'application via les menus windows (exemple : la petite croix rouge en haut à droite).

    Ce que je souhaite, c'est explicitement lui afficher une boite de dialogue pour qu'il confirme son choix et d'annuler l'acte si c'est une erreur.

    D'avance merci pour votre retour.

    A+

  2. #2
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 164
    Points
    164
    Par défaut
    Je précise que j'ai déjà mis une form fantome pour capter l'evenement de fermeture mais si je ferme avec les menus windows, je n'arrive pas à afficher une boite de dialogue et imposer une validation de cet acte barbare.

    Merci de votre aide
    A+

  3. #3
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Dans l'événement Sur libération de ton formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Unload(Cancel As Integer)
     
        If MsgBox("Voulez-vous vraiment quitter l'application ?", vbQuestion + vbYesNo + vbDefaultButton2, "Message") = vbNo Then
     
            Cancel = True
     
        End If
     
    End Sub
    Domi2

  4. #4
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 164
    Points
    164
    Par défaut
    Merci.

    Je ne captais pas le bon évenement.

    A+

  5. #5
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 164
    Points
    164
    Par défaut
    Je reviens sur cette question car la manip fonctionne correctement sauf que dans cet événement, je veux mettre à jour des infos dans la base.

    Pour celà, j'ai une variable globale (module commun et global) qui me donne le nom de l'utilisateur.

    Quand l'évenement est déclenché cette variable ne comporte plus du tout la bonne valeur.

    L'événement upload à t il des fonctionnements particulier?

    Voir la varible GNom_User dans l'exemple ci-joint.

    A+
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    C'est surtout au niveau de l'organisation et de la gestion de tes événements que le problème se situe.

    Dès le moment ou tu décides de quitter l'application et que tu exécutes un :

    toutes les variables sont déjà perdues.

    Si tu dois exécuter du code avant la fermeture de ton application, il faut en empêcher la fermeture par la croix du menu système.

    Et exécuter ton code sur l'événement Sur clic de ton bouton de sortie, avant de quitter l'application.

    Domi2

  7. #7
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour Basto,

    Pour activer et désactiver la croix rouge colle le code suivant 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
    Option Explicit
     
    ' ***********************API pour désactiver la croix rouge en haut et à droite de la fenêtre Access *********************
    Private Declare Function GetSystemMenu Lib "user32" _
            (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Private Declare Function RemoveMenu 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 = &H0&
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
     
    Public Sub DesacFermeture()
    'Désactive la croix rouge en haut et à droite de la fenêtre Access
    Dim hSysMenu As Long
     
    hSysMenu = GetSystemMenu(Application.hWndAccessApp, False)
    RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
     
    End Sub
     
     
    Public Sub ReactiveFermeture()
    'Réactive la croix rouge en haut et à gauche de la fenêtre Access
    Dim hSysMenu As Long
    hSysMenu = GetSystemMenu(Application.hWndAccessApp, True)
    DrawMenuBar hSysMenu
     
    End Sub
    Pour désactiver la croix rouge :
    Pour Réactiver la croix rouge :
    Cordialement

    Marsouin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/08/2014, 16h38
  2. Réponses: 1
    Dernier message: 22/10/2009, 12h51
  3. Je cherche comment empecher la fermeture d'un programme
    Par Battosai Himura dans le forum VB.NET
    Réponses: 3
    Dernier message: 02/12/2007, 12h46
  4. Réponses: 69
    Dernier message: 15/06/2006, 11h42
  5. Comment retrouver les menus complets de Access ???
    Par sweety107 dans le forum Access
    Réponses: 3
    Dernier message: 20/12/2004, 11h33

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