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 :

Afficher Barre de Menu [AC-2003]


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Afficher Barre de Menu
    Bonjour,

    J'ai une base de données Access en mdb dont j'ai désactivé le bouton shift et la fenêtre de base de données grâce au code suivant que je lance avec une macro Autoexec :
    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
    Function DesactiveShift()
     
        Dim Dbs As DAO.Database
        Dim Prp As DAO.Property
        Set Dbs = CurrentDb()
     
    On Error GoTo errProperty
        Dbs.Properties("AllowByPassKey") = False
        Dbs.Properties("StartupShowDBWindow") = False
     
    okProperty:
     
        Set Prp = Nothing
        Dbs.Close
        Set Dbs = Nothing
    Exit Function
     
    errProperty:
     
        Set Prp = Dbs.CreateProperty("AllowByPassKey", 1, False)
        Set Prp = Dbs.CreateProperty("StartupShowDBWindow", 1, False)
        Dbs.Properties.Append Prp
        Resume okProperty
     
    End Function
    J'ai placé un bouton qui appelle la fonction ShowDbWindow True/False, afin que l'administrateur puisse réaffiché la fenêtre de base de données, ci-après le code :
    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
    Option Compare Database
    Option Explicit
     
     
    Private Declare Function GetClassNameA Lib "user32" (ByVal hwnd As Long, _
                                                        ByVal lpClassName As String, _
                                                        ByVal nMaxCount As Long) As Long
     
    Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
                                                    ByVal wCmd As Long) As Long
     
    Private Declare Function ShowWindowAsync Lib "user32" (ByVal hwnd As Long, _
                                                        ByVal nCmdShow As Long) As Boolean
     
    Private Const GW_HWNDNEXT = 2
    Private Const GW_CHILD = 5
     
    Private Const SW_HIDE = 0
    Private Const SW_SHOW = 5
     
    Private Function GetClassName(ByVal hwnd As Long) As String
        Dim lpClassName As String
        Dim lLen As Long
     
        lpClassName = String(255, 32)
        lLen = GetClassNameA(hwnd, lpClassName, 255)
        If lLen > 0 Then
            GetClassName = Left(lpClassName, lLen)
        End If
     
    End Function
     
    Public Sub ShowDbWindow(ByVal bCmdShow As Boolean)
        Dim hWndApp As Long
     
        hWndApp = GetWindow(Application.hWndAccessApp, GW_CHILD)
        Do Until hWndApp = 0
            If GetClassName(hWndApp) = "MDIClient" Then
    Exit Do
            End If
            hWndApp = GetWindow(hWndApp, GW_HWNDNEXT)
        Loop
     
        If hWndApp > 0 Then
            hWndApp = GetWindow(hWndApp, GW_CHILD)
            Do Until hWndApp = 0
                If GetClassName(hWndApp) = "ODb" Then
    Exit Do
                End If
     
                hWndApp = GetWindow(hWndApp, GW_HWNDNEXT)
            Loop
        End If
     
        If hWndApp > 0 Then
            ShowWindowAsync hWndApp, IIf(bCmdShow, SW_SHOW, SW_HIDE)
        End If
     
    End Sub
    Mon problème est le suivant, j'arrive effectivement a réaffiché la fenêtre de base de données, mais pas la barre de menu.
    J'ai déjà essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To Application.CommandBars.Count
         DoCmd.ShowToolbar Application.CommandBars.Item(i).Name, acToolbarYes
    Next
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.ShowToolbar "menu bar", acToolbarYes
    Mais ça ne fonctionne pas quelqu'un peut-il m'aider ?

    Merci d'avance.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Re Afficher Barre de Menu
    Bonjour,

    Suite à quelques recherches j'ai décidé de ne plus désactiver la fenêtre principale ainsi que les Barres de Menu, ni via le menu : Outils>Démarrage, ni via l'AutoExec, mais à l'ouverture de ma fenêtre principale via le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DoCmd.SelectObject acTable, , True
    DoCmd.RunCommand acCmdWindowHide
     
    DoCmd.ShowToolbar "Menu bar", acToolbarNo
    Ensuite pour réactiver le tout je lance le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.SelectObject acTable, , True
     
    DoCmd.ShowToolbar "Menu bar", acToolbarYes
    Pour en revenir à l'AutoExec, il y a une erreur dans la fonction DesactiveShift, ci-après le bon code :
    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
    Function DesactiveShift()
     
        Dim Dbs As DAO.Database
        Dim Prp As DAO.Property
        Dim PrpII As DAO.Property
        Set Dbs = CurrentDb()
     
    On Error GoTo errProperty
        Dbs.Properties("AllowByPassKey") = False
    okProperty:
        Set Prp = Nothing
     
    On Error GoTo errPropertyII
        Dbs.Properties("StartupShowDBWindow") = False
    okPropertyII:
        Set PrpII = Nothing
        Dbs.Close
        Set Dbs = Nothing
    Exit Function
     
    errProperty:
        Set Prp = Dbs.CreateProperty("AllowByPassKey", 1, False)
        Dbs.Properties.Append Prp
        Resume okProperty
    Exit Function
     
    errPropertyII:
        Set PrpII = Dbs.CreateProperty("StartupShowDBWindow", 1, False)
        Dbs.Properties.Append PrpII
        Resume okPropertyII
    End Function

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

Discussions similaires

  1. [AC-2003] Barre de menu qui s'affiche uniquement dans les requete
    Par scorpking dans le forum IHM
    Réponses: 0
    Dernier message: 28/03/2013, 14h10
  2. [AC-2007] Afficher le nom de ma BDD sur la barre de menu
    Par Bonero dans le forum VBA Access
    Réponses: 4
    Dernier message: 18/07/2012, 22h53
  3. afficher la barre de menu ?
    Par WELCOMSMAIL dans le forum Windows Vista
    Réponses: 7
    Dernier message: 22/02/2007, 23h31
  4. barre de menu principal
    Par norfelt dans le forum IHM
    Réponses: 10
    Dernier message: 27/10/2003, 11h37
  5. Comment créer des barres de Menu ?
    Par MoKo dans le forum IHM
    Réponses: 5
    Dernier message: 30/07/2003, 14h58

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