Question 136

Comment centrer une fenêtre à l'écran ?

Il faut distinguer 2 cas :

  • Placement d'une feuille "normale" (SDI = Single Document Interface)
  • Placement d'une feuille MDI (MDI = Multiple Document Interface)

Pour centrer automatiquement une feuille SDI, il suffit d'attribuer la valeur 2 (CenterScreen) à la propriété StartupPosition de la feuille.
Ceci se fait simplement au moment de la creation de la feuille dans l'IDE. A noter que l'usage de cette propriété n'est pas autorisé lors de l'exécution.

Si on a besoin de faire cette opération lors de l'exécution, il faut le faire par programmation.
Le code pour faire cela est très simple :

    Me.Left = (Screen.Width - Me.Width) \ 2
    Me.Top = (Screen.Height - Me.Height) \ 2


Pour centrer automatiquement une feuille MDI, la seule solution est la solution par programmation.
Ceci se fait de façon très similaire à ce que nous avons fait pour la feuille SDI :

Sub CenterChild(Parent As Form, Child As Form)

    Dim iTop As Integer
    Dim iLeft As Integer
     
    If Parent.WindowState <> vbNormal Then
        Exit Sub
    Else
        iTop = ((Parent.Height - Child.Height) \ 2)
        iLeft = ((Parent.Width - Child.Width) \ 2)
        Child.Move iLeft, iTop
    End If
End Sub

Et l'appel correspondant :

    Call CenterChild(Me, frmD)

Date de publication : 19 novembre 2006
Dernière modification : 19 novembre 2006
Rubriques : Affichage & graphismes
Mots-clés : centrer,positionnement,fenêtre,StartUpPosition,WindowState,centrage,centre