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 :

Incorporer un code dans un module pour toutes les pages


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 919
    Points : 235
    Points
    235
    Par défaut Incorporer un code dans un module pour toutes les pages
    Bonjour à tous,

    Je fais un prog qui contient plusieurs pages, et pour chacune d'elles je mets plusieurs sub pour "désactiver la case System" et "empêcher le déplacement" de la fenêtre.
    Ci-après les procédures en question :
    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
     
    '==== Désactive les options de la case system =========================
      Dim nStyle  As Long
      Dim nMenu   As Long
      Dim nCount  As Long
      Dim hMenu As Long
     Dim menuItemCount As Long
     
    '--- Désactive la case system "fermer" ----
       hMenu = GetSystemMenu(Me.hwnd, 0)
       If hMenu Then
          menuItemCount = GetMenuItemCount(hMenu)
          Call RemoveMenu(hMenu, menuItemCount - 1, MF_REMOVE Or MF_BYPOSITION)
          Call RemoveMenu(hMenu, menuItemCount - 2, MF_REMOVE Or MF_BYPOSITION)
          Call DrawMenuBar(Me.hwnd)
       End If
     
      '--- Empêche le déplacement ---
      With Me
        nStyle = GetWindowLong(.hwnd, GWL_STYLE)
        nStyle = nStyle And Not (WS_THICKFRAME)
        SetWindowLong .hwnd, GWL_STYLE, nStyle
        nMenu = GetSystemMenu(.hwnd, 0)
        RemoveMenu nMenu, SC_MOVE, MF_REMOVE Or MF_BYCOMMAND
        nCount = GetMenuItemCount(nMenu)
        RemoveMenu nMenu, nCount - 2, MF_REMOVE Or MF_BYPOSITION
        DrawMenuBar .hwnd
      End With
    Me.BackColor = &HC0C0C0
    Ces lignes de codes m'ont été fournies par différents forums je crois, dont celui-ci si je ne me trompe pas, et je voudrais savoir comment le mettre dans un module (si c'est possible) pour m'éviter de les spécifier dans toutes les pages !

    J'ai vu dans l'aide l'index avec "Parent" ! Y a bien des exemples mais pour un "Sub Form_Load" et ça ne m'aide pas.

    J'ai fait la même chose pour paramétrer des contrôles (OptionButton" et 'CommandButton") mais ut=niquement pour le positionnement et la couleur.

    Donc, pour faire le code plus haut, c'est un peu plus compliqué pour moi.

    C'est pour ça que j'ai absolument besoin de vos lumières pour parvenir à un bon résultat.

    Merci de votre réponse.
    Cordialement.
    JLB59

    Analyse de la mémoire

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 174
    Points
    17 174
    Par défaut
    Salut

    Dans un module.bas
    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
    Option Explicit
    Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
    Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Private Const MF_REMOVE = &H1000&
    Private Const MF_BYPOSITION = &H400&
    Private Const GWL_STYLE = (-16)
    Private Const WS_THICKFRAME = &H40000
    Private Const SC_MOVE = &HF010&
    Private Const MF_BYCOMMAND = &H0&
     
    Public Sub GestMenuSys(Frm As Form)
     
    '==== Désactive les options de la case system =========================
    Dim nStyle  As Long
    Dim nMenu   As Long
    Dim nCount  As Long
    Dim hMenu As Long
    Dim menuItemCount As Long
     
    '--- Désactive la case system "fermer" ----
       hMenu = GetSystemMenu(Frm.hwnd, 0)
       If hMenu Then
          menuItemCount = GetMenuItemCount(hMenu)
          Call RemoveMenu(hMenu, menuItemCount - 1, MF_REMOVE Or MF_BYPOSITION)
          Call RemoveMenu(hMenu, menuItemCount - 2, MF_REMOVE Or MF_BYPOSITION)
          Call DrawMenuBar(Frm.hwnd)
       End If
     
      '--- Empêche le déplacement ---
      With Frm
        nStyle = GetWindowLong(.hwnd, GWL_STYLE)
        nStyle = nStyle And Not (WS_THICKFRAME)
        SetWindowLong .hwnd, GWL_STYLE, nStyle
        nMenu = GetSystemMenu(.hwnd, 0)
        RemoveMenu nMenu, SC_MOVE, MF_REMOVE Or MF_BYCOMMAND
        nCount = GetMenuItemCount(nMenu)
        RemoveMenu nMenu, nCount - 2, MF_REMOVE Or MF_BYPOSITION
        DrawMenuBar .hwnd
      End With
    Frm.BackColor = &HC0C0C0
    End Sub
    En fait je n'ai fait que remplacé Me par Frm, l'unique paramétre de la sub GestMenuSys.
    L'appel dans x Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Load()
    GestMenuSys Me
    End Sub
    Pour les contrôles sur un Form, une nouvelle Sub dans le module avec paramètre LeCtrl as Control, elle pourrait ressembler a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub GestControles(LeCtrl As Control)
    Select Case TypeName(LeCtrl)
        Case "TextBox": LeCtrl.BackColor = 255
        Case "OptionButton": LeCtrl.Caption = "Coucou"
        Case "CommandButton": LeCtrl.Caption = "un bouton"
    End Select
    End Sub
    L'appel dans x Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GestControles Text1
    GestControles Option1
    GestControles Command1
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 919
    Points : 235
    Points
    235
    Par défaut
    C'est très sympa d'avoir mis le 1ere exemple d'un module.bas.

    Tu me dis avoir remplacé le "Me" par des "Frm", peut-être que mon erreur à l'exécution venait de là !

    En tout cas, merci beaucoup des ces exemples.

    Je vais essayé ça et si c'est OIK, je mettrai mon post comme "Resolu" !
    Cordialement.
    JLB59

    Analyse de la mémoire

  4. #4
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 919
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Salut

    Dans un module.bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Explicit
    Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
    ...
    J'ai fait cela dans un module.bas comme tu me le conseilles, mais à partir de la 1ère ligne "Private" j'ai une erreur, donc pas d'exécution. Impossible d'aller plus loin.

    Par contre, si je mets le code dans une "Form_Load" de page, il n'y a pas d'erreur.

    Même en mettant "Public", c'est pareil !

    Ai-je fait une bêtise ?
    Cordialement.
    JLB59

    Analyse de la mémoire

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par jlb59 Voir le message
    J'ai fait cela dans un module.bas comme tu me le conseilles, mais à partir de la 1ère ligne "Private" j'ai une erreur, ...
    qu'est ce qui te fait dire que tu as une erreur ?

  6. #6
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 919
    Points : 235
    Points
    235
    Par défaut
    Simplement que j'ai
    Erreur de compilation:
    Seuls des commentaires peuvent apparaître après End Sub, End Function ou End Property
    C'est ce que j'appelle une erreur puisque c'est marqué comme ça !
    Cordialement.
    JLB59

    Analyse de la mémoire

  7. #7
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 174
    Points
    17 174
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Salut
    L'appel dans x Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GestControles Text1
    GestControles Option1
    GestControles Command1
    Ces appels a la Sub GestControles se trouvant dans le même module .bas que la Sub GestMenuSys doivent être fait dans une Sub d'un Form quelconque, pas à la suite.
    Code qui a peut créer l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Load()
    GestMenuSys Me
    End Sub
    GestControles Text1
    GestControles Option1
    GestControles Command1
    l'essai proposé devant être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Load()
    GestMenuSys Me
    GestControles Text1
    GestControles Option1
    GestControles Command1
    End Sub
    A la condition qu'il y est bien 1 TextBox, 1 OptionButton et un CommandButton sur le Form qui appel cette Sub Public du module.bas.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 919
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Ces appels a la Sub GestControles se trouvant dans le même module .bas que la Sub GestMenuSys doivent être fait dans une Sub d'un Form quelconque, pas à la suite.
    Code qui a peut créer l'erreur[code]Private Sub Form_Load()
    Non, je n'avais pas besoin de tout ça, car toutes mes pages sont différentes (OptionButton, CommandButton, Picture, Label, TextBox...).
    Donc, si je mets ton code complet dans un module.bas, toutes les pages devront avoir les mêmes objets.

    Tout bien réfléchi, c'est peut-être la source de l'erreur :http://qi98.free.fr/temp/Image3.jpg

    Je vais regarder ça de plus près parce que y a pas de raison.
    Tu m'as donné un code OK, donc, c'est à moi à faire en sorte que tout aille bien !
    Cordialement.
    JLB59

    Analyse de la mémoire

  9. #9
    Membre actif
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 919
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Ces appels a la Sub GestControles se trouvant dans le même module .bas que la Sub GestMenuSys doivent être fait dans une Sub d'un Form quelconque, pas à la suite.
    ...
    A la condition qu'il y est bien 1 TextBox, 1 OptionButton et un CommandButton sur le Form qui appel cette Sub Public du module.bas.
    Tout a été fait comme tu me l'as mis et pour ce qui est de l'autre condition, toutes les pages n'ont pas tout ça !
    Cordialement.
    JLB59

    Analyse de la mémoire

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

Discussions similaires

  1. If dans un for pour tout les passages
    Par Calvein dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/12/2008, 13h03
  2. En-tête pour toutes les pages
    Par ProgVal dans le forum Débuter
    Réponses: 7
    Dernier message: 21/05/2008, 18h09
  3. [ASP.NET] URL fixe pour toutes les pages d'un site
    Par Ant8386 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 20/09/2007, 15h57
  4. variables globales pour toutes les pages
    Par tetedeturcq dans le forum ASP.NET
    Réponses: 5
    Dernier message: 03/04/2007, 10h28
  5. Réponses: 2
    Dernier message: 09/03/2007, 16h52

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