DIMENSION DE L'INTÉRIEUR D'UNE FENÊTRE - RÉGLER LA TAILLE D'UNE FENÊTRE EN FONCT

_120_ Messages postés 15 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 3 mai 2007 - 20 mars 2006 à 17:23
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 21 mars 2006 à 09:36
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 mars 2006 à 09:36
oui, ByRef est bien le mode par défaut. Mais il vaut mieux le préciser néanmoins, ça ne coute pas grand chose.
_120_ Messages postés 15 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 3 mai 2007
21 mars 2006 à 07:44
Renfield, quand je vois ton "ByRef F As Form" : si je ne spécifie pas ByRef ni ByVal (comme j'ai fait), ma Form est automatiquement passée par adresse, étant donnée que je fait une modification sur celle-ci, non ?
_120_ Messages postés 15 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 3 mai 2007
21 mars 2006 à 07:35
Merci Gobillot featuring Renfield !

J'avais pas pensé à ça en effet !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 mars 2006 à 23:05
très bonne remarque, Gobillot.
pour la forme :


Private Sub Set_Int_Dims(ByRef F As Form, ByVal TargetWidth As Single, ByVal TargetHeight As Single)
Dim BordureX As Single
Dim BordureY As Single
With F
If .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 = .Width - .ScaleX(.ScaleWidth, .ScaleMode, vbTwips)
BordureY = .Height - .ScaleY(.ScaleHeight, .ScaleMode, vbTwips)

'la taille extérieure de ma form doit donc etre égale à la dimension intérieure
'choisie + les bordures
TargetWidth = .ScaleX(TargetWidth, .ScaleMode, vbTwips)
TargetHeight = .ScaleY(TargetHeight, .ScaleMode, vbTwips)

.Move .Left, .Top, TargetWidth + BordureX, TargetHeight + BordureY
End If
End With
End Sub
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
20 mars 2006 à 19:59
et si le Scalemode est égal à 3
F.Width est en Twips
F.ScaleWidth est en Pixels

donc pas bon !
_120_ Messages postés 15 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 3 mai 2007
20 mars 2006 à 18:14
oui mais non ;-)

Parce que imagine que tu ais une form de ce style :

___________________________
|text1______________________|
_____________
| command1 |
|_____________|

Si tu veux que la fenetre prenne pile les dimensions nécéssaires, il faut pouvoir donner text1.width en parametre pour la largeur et command1.top+command1.height pour la hauteur
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
20 mars 2006 à 17:59
Private Sub Ajuster_Click()
SetDim Me, Image1
End Sub

Private Sub SetDim(F As Form, O As Object)
On Error Resume Next
F.Width = O.Width + (F.Width - F.ScaleWidth)
F.Height = O.Height + (F.Height - F.ScaleHeight)
End Sub

@+
_120_ Messages postés 15 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 3 mai 2007
20 mars 2006 à 17:23
Vous êtes des dizaines a regarder ma source et personne met de commentaire !

:'-(
Rejoignez-nous