Autocentrage d'une mdichild par rapport une feuille mdi

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 535 fois - Téléchargée 30 fois

Contenu du snippet

Lorsque vous utilisez une feuille MDI, vous ne pouvez pas afficher les feuilles MDIChild au centre de l'écran ou de la feuille MDI.
J'ai donc développé un petit bout de code permetant de calculer le centre de la feuille MDI et celui d'une feuille MDIChild afin de les superposer.
Ainsi quelque soit la taille de l'écran ou celui de la feuille MDI , la feuille MDIChild sera toujours centrée.

Source / Exemple :


Private Sub Form_Initialize()

'Déclaration des variables
Dim CentreVertEcran As Double
Dim CentreHoriEcran As Double
Dim CentreVertMe As Double
Dim CentreHoriMe As Double
Dim DistGauche As Double
Dim DistHaute As Double

'Calcul du centre de l'écran
CentreHoriEcran = (Screen.Width) / 2
CentreVertEcran = (Screen.Height) / 2

'Calcul du centre du formulaire
CentreHoriMe = (Me.Width) / 2
CentreVertMe = (Me.Height) / 2

'Calcul de la distance entre le bord gauche de la feuille MDI et celui du Formulaire
DistGauche = CentreHoriEcran - CentreHoriMe

'Calcul de la distance entre le bord haut de la feuille MDI et celui du Formulaire
DistHaute = CentreVertEcran - CentreVertMe

'Positionnement du formulaire au centre de la feuille MDI
Me.Left = DistGauche
Me.Top = DistHaute - 500  'Correction de 500

End Sub

Conclusion :


Ce code est à inserrer dans ce lui de la feuille MDIChild que l'on souhaite centrer avec la feuille MDI.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
26
Date d'inscription
mardi 20 mai 2003
Statut
Membre
Dernière intervention
22 janvier 2008

Salam,

Merci Ricks27, ça marche NICKEL!!!!!!! :)
Messages postés
27
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
18 mai 2005

Je pense que c'est mieux:

à condition que les bordures de la fenêtre soit statique

Private Sub Form_Resize()
Me.Top = (MDIForm1.ScaleHeight - ScaleHeight) / 2
Me.Left = (MDIForm1.ScaleWidth - ScaleWidth) / 2
end sub
Messages postés
79
Date d'inscription
mardi 4 juin 2002
Statut
Membre
Dernière intervention
29 juillet 2005

Pour info, car j'ai oublié de le signaler : "Menu" = le nom de la feuille Mdi.
Messages postés
79
Date d'inscription
mardi 4 juin 2002
Statut
Membre
Dernière intervention
29 juillet 2005

Pour t'éviter de retapper à chaque fois ton code :
------------------------------------------------------

Ds le form_load de chaque form MdiChild : Centrage Me

Sub Centrage(Feuille As Form)
Feuille.Left = (Menu.Width / 2) - (Feuille.Width / 2)
Feuille.Top = (Menu.ScaleHeight / 2) - (Feuille.Height / 2)
End Sub
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Me.move (MDI.width - me.with) / 2 , ( MDI.height - Me.height) /2

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.