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 :

Centrer un formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 103
    Points : 60
    Points
    60
    Par défaut Centrer un formulaire
    Bonsoir,

    j'essaye de mettre en place cette procédure qui permet d'auto centrer un formulaire en fonction de la résolution.

    j'ai donc créer mon module positionner:

    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
    Option Compare Database
    Option Explicit
     
    Public Sub positionner(frm As Form)
    Dim FParent As Position '--Fenêtre Parent
    Dim Fenetre As Position
    Dim Largeur As Integer
    Dim Hauteur As Integer
    Dim LParent As Integer ' --Largeur Fenêtre Parent
    Dim HParent As Integer ' --Hauteur Fenêtre Parent
    Dim PParent As Long ' --Posion parent
    On Error GoTo Erreur
     ' --Trouver les coordonnées de mon formulaire à centrer.
    PParent = GetParent(frm.hwnd)
     ' --Obtenir les coordonnées de mon formulaire et celles de son parent.
    Call GetWindowRect(frm.hwnd, Fenetre)
     ' --Si le parent est la fenêtre Access, pas de soustracion
    If PParent <> Application.hWndAccessApp Then
        Call GetWindowRect(PParent, FParent)
    Else
        ' -- les coordonnées du Desktop
        Call GetWindowRect(GetDesktopWindow(), FParent)
    End If
     ' --Calcul de la largeur et de la hauteur du parent
    With FParent
        LParent = .Right - .Left
        HParent = .Bottom - .Top
    End With
     ' --Calcul de la largeur et de la hauteur de mon formulaire
    With Fenetre
        Largeur = .Right - .Left
        Hauteur = .Bottom - .Top
        .Left = (LParent - Largeur) \ 2
        .Top = (HParent - Hauteur) \ 2
    End With
     ' --Centrer mon formulaire
    Call MoveWindow(frm.hwnd, Fenetre.Left, Fenetre.Top, Largeur, Hauteur, bRepaint:=True)
    Exit Sub
    Erreur:
    MsgBox "Erreur: " & Err.Number & vbCrLf & Err.Description
    End Sub
    je fait donc appel à ce module à l'ouverture de mon formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Open(Cancel As Integer)
    Call positionner(Me)
    End Sub
    cependant lors de l'ouverture access me dit qu'une variable ou procédure est attendue, et non un module.

    à moins d'avoir mal compris la FAQ je ne vois pas comment résoudre ce problème!

    Merci,
    Maxime

  2. #2
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut
    Et cette partie, tu l'as rajouté ?

    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
    Private Type Position
      Left As Long
      Top As Long
      Right As Long
      Bottom As Long
    End Type
     ' --Pour obtenir les coordonnées de la fenêtre parent
    Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
     ' --Pour obtenir les coordonnées de notre formulaire
    Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, _
    lpRect As Position) As Long
     ' --Pour obtenir les coordonnées de l'écran
    Public Declare Function GetDesktopWindow Lib "user32" () As Long
     ' --Pour positionner et dimensionner la fenêtre
    Public Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, _
    ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, _
    ByVal nHeight As Long, ByVal bRepaint As Long) As Long

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 9
    Points : 9
    Points
    9
    Par défaut petite correction

    j'ai utilisé cette méthode pour faire le centrage de mes formulaires mais le type position n'était pas reconnu... va savoir pourquoi bref j'ai feinté la machine en faisant une petit modification du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Sub Positionner(frm As Form)
        Dim FParent As RECT '--Fenêtre Parent
        Dim Fenetre As RECT
              ' au lieu de position mettre le type RECT connu par access et ca marche super bien
     
        Dim LParent As Integer ' --Largeur Fenêtre Parent
        Dim HParent As Integer ' --Hauteur Fenêtre Parent
        Dim PParent As Long ' --Position parent
    ....
    end sub
    voit si ca marche pour toi ...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    merci à vous deux, je test cela et vous tiens au courant

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    Merci à vous deux!

    Problème résolu en rajoutant le code de Frank (que j'ai revu en parcourant les différents sujets sur le centrage de formulaire),
    cependant pas eu besoin de modifier le code comme bibicador.

    Merci à vous deux pour votre contribution

    Maxime

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut La question du débutant
    Bonjour,
    je tente d'effectuer la meme chose que Maxime mais sans succès !
    Je pense que mon problème viens de la partie de code de Franck que je ne sais pas où placer. Pour le moment je l'ai collé juste en dessous de Option Explicit.
    Pour info un shoot d'écran de l'erreur.

    Si ça vous dit quelque chose ?
    Merci d'avance

    Xilaciol
    Images attachées Images attachées  

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

Discussions similaires

  1. Centrer un formulaire dans une page Internet
    Par Stouille89 dans le forum GWT et Vaadin
    Réponses: 3
    Dernier message: 07/11/2007, 21h53
  2. Réponses: 5
    Dernier message: 14/07/2007, 10h59
  3. [Forms 6i] Centrer un formulaire ?
    Par rafioklou dans le forum Forms
    Réponses: 1
    Dernier message: 10/05/2007, 09h54
  4. [HTML]centrer un formulaire (firefox 1.5.0.5)
    Par Ania dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 02/08/2006, 11h01
  5. centrer un formulaire sous ACCESS97
    Par Brett dans le forum Access
    Réponses: 2
    Dernier message: 19/10/2005, 14h48

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