Dimension de l'intérieur d'une fenêtre - régler la taille d'une fenêtre en fonction de l'espace réellement utilisable par le

Description

Pour ceux qui n'ont jamais rencontré ce problème, essayez de mettre une petite image en haut à gauche de votre form, et faites me.height=image1.height et me.width=image1.width : vous verrez que les bordures de la fenêtre ne se superposeront pas exactement aux bordures de votre image car me.height et me.width ne renvoient pas les dimensions de l'intérieur de la fenêtre mais de l'extérieur de la fenêtre (incluant barre de titre et bordures).

Le but de ma source est le suivant : J'ai vu récemment plusieurs codes qui permettent d'ajuster une fenêtre à un contrôle en contournant ce problème de la taille des bordures (bordures de quelques pixels sur les cotés et le bas, et barre de titre en haut). Or, ces sources utilisent des API ou diverses fonctions plus ou moins complexes.

Mais moi, depuis toujours, j'utilise une petite procedure toute simple pour redimensionner une form à la dimension intérieure voulue, donc, devant ces sources plus complexes, je me pose la question suivante : Est-ce que ma façon de faire est "propre" ???
Si non, quel est l'intérêt d'utiliser des API plutôt que cette méthode ???
Si oui, voilà pour ceux qui le cherchaient une façon plus simple de le faire :)

Source / Exemple :


Private Sub Ajuster_Click()

Set_Int_Dims Me, Image1.Width, Image1.Height

End Sub

Private Sub Set_Int_Dims(F As Form, Width As Integer, Height As Integer)

Dim BordureX As Integer
Dim BordureY As Integer

If F.WindowState = vbNormal Then 'si la fenetre n'est pas maximisée ou minimisée
    
    'en faisant la différence entre les dimensions extérieures et intérieures
    'de la form, j'obtiens la taille des bordures entourant ma form
    BordureX = F.Width - F.ScaleWidth
    BordureY = F.Height - F.ScaleHeight

    'la taille extérieure de ma form doit donc etre égale à la dimension intérieure
    'choisie + les bordures
    F.Width = Width + BordureX
    F.Height = Height + BordureY

End If

End Sub

Codes Sources

A voir également

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.