Taille reellle d'une form (contenu)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 510 fois - Téléchargée 33 fois

Contenu du snippet

Voila la solution (j'ai pas testé avec plusieurs styles visuels, mais logiquement ca doit marcher), pour connaitre la taille du contenu d'une form.
Vous l'aurez peut etre remarqué
form.width et form.height renvoient la taille avec toutes les bordures et titres de la fenetre. Conséquence si vous voulez qu'un controle prenne exactement, par exemple, la largeur de la form il vous faudra utiliser le code suivant :

controle.width=form.width - 400
ssi vous ne mettez pas le 400 (arbitraire), le controle sera plus grand que la form, et n'apparaitra pas entierement, car la taille du contenu de la fenetre est plus petite que la fenetre :p

voila donc la methode pour recupere cette taille plus petite.

Source / Exemple :


Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Const SM_CYCAPTION = 4 'Height of windows caption
Const SM_CXBORDER = 5 'Width of no-sizable borders
Const SM_CYBORDER = 6 'Height of non-sizable borders
Const SM_CXDLGFRAME = 7 'Width of dialog box borders
Const SM_CYDLGFRAME = 8 'Height of dialog box borders

Public Function GetFormContenairWidth(Form_ As Form)
    GetFormContenairWidth = Form_.Width - GetSystemMetrics(SM_CXDLGFRAME) * 15 * 2 - GetSystemMetrics(SM_CXBORDER) * 15 * 2
End Function
Public Function GetFormContenairHeight(Form_ As Form)
    GetFormContenairHeight = Form_.Height - GetSystemMetrics(SM_CYCAPTION) * 15 - GetSystemMetrics(SM_CYDLGFRAME) * 15 * 2 - GetSystemMetrics(SM_CYBORDER) * 15 * 2
End Function

Conclusion :


Utilisez ces 2 methodes ainsi :

controle.width=GetFormContenairWidth(Form)
controle.height=GetFormContenairHeight(Form)

et la quelque soit le systeme (normalement compatible 95/98/nt/xp) le controle rentrera entierement dans la form, et quelque soit le style visuel utilisé dans XP

voila
j'espere ca vous aidera :p
++

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

comme quoi on en apprend tous les jours ;)
Messages postés
550
Date d'inscription
vendredi 5 janvier 2001
Statut
Membre
Dernière intervention
23 septembre 2006

oups :-D

dsl connaissai pas, mais ma methode marche aussi lool
a+
Messages postés
4531
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
8
GetClientRect (contenue)
GetWindowRect (contenant)

rien d'autre...

@+
Messages postés
224
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
17 juin 2006

Form.ScaleMode = 3 (Pixel)
Messages postés
224
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
17 juin 2006

y'a plus simple, il te suffit pour celà de mettre le Form.ScaleMode = (Pixel) et d'utiliser Form.ScaleWidth et Form.ScaleHeight :)

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.