DIMENSION DE L'INTÉRIEUR D'UNE FENÊTRE - RÉGLER LA TAILLE D'UNE FENÊTRE EN FONCT
_120_
Messages postés15Date d'inscriptionsamedi 11 novembre 2000StatutMembreDernière intervention 3 mai 2007
-
20 mars 2006 à 17:23
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
21 mars 2006 à 09:36
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és15Date d'inscriptionsamedi 11 novembre 2000StatutMembreDerniè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és15Date d'inscriptionsamedi 11 novembre 2000StatutMembreDernière intervention 3 mai 2007 21 mars 2006 à 07:35
Merci Gobillot featuring Renfield !
J'avais pas pensé à ça en effet !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 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és15Date d'inscriptionsamedi 11 novembre 2000StatutMembreDernière intervention 3 mai 2007 20 mars 2006 à 18:14
oui mais non ;-)
Parce que imagine que tu ais une form de ce style :
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és4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 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és15Date d'inscriptionsamedi 11 novembre 2000StatutMembreDernière intervention 3 mai 2007 20 mars 2006 à 17:23
Vous êtes des dizaines a regarder ma source et personne met de commentaire !
21 mars 2006 à 09:36
21 mars 2006 à 07:44
21 mars 2006 à 07:35
J'avais pas pensé à ça en effet !
20 mars 2006 à 23:05
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
20 mars 2006 à 19:59
F.Width est en Twips
F.ScaleWidth est en Pixels
donc pas bon !
20 mars 2006 à 18:14
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
20 mars 2006 à 17:59
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
@+
20 mars 2006 à 17:23
:'-(