Autocentrage d'une mdichild par rapport une feuille mdi

0/5 (5 avis)

Snippet vu 5 802 fois - Téléchargée 32 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.
Ajouter un commentaire Commentaires
yourspinner Messages postés 26 Date d'inscription mardi 20 mai 2003 Statut Membre Dernière intervention 22 janvier 2008
4 janv. 2008 à 12:19
Salam,

Merci Ricks27, ça marche NICKEL!!!!!!! :)
cs_michelc Messages postés 27 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 18 mai 2005
3 nov. 2003 à 19:03
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
Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005
3 nov. 2003 à 09:59
Pour info, car j'ai oublié de le signaler : "Menu" = le nom de la feuille Mdi.
Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005
3 nov. 2003 à 09:56
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
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
31 oct. 2003 à 12:27
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.