Taille reellle d'une form (contenu)

5/5 (5 avis)

Snippet vu 5 811 fois - Téléchargée 35 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
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
24 oct. 2004 à 20:28
comme quoi on en apprend tous les jours ;)
cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006
24 oct. 2004 à 12:11
oups :-D

dsl connaissai pas, mais ma methode marche aussi lool
a+
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
24 oct. 2004 à 11:17
GetClientRect (contenue)
GetWindowRect (contenant)

rien d'autre...

@+
ennixo Messages postés 224 Date d'inscription samedi 25 janvier 2003 Statut Membre Dernière intervention 17 juin 2006
24 oct. 2004 à 10:07
Form.ScaleMode = 3 (Pixel)
ennixo Messages postés 224 Date d'inscription samedi 25 janvier 2003 Statut Membre Dernière intervention 17 juin 2006
24 oct. 2004 à 10:06
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.