Redimensionner le formulaire dans MS Access en modifiant Detail.Height
-
21-12-2019 - |
Question
Je souhaite que l'utilisateur puisse modifier la hauteur du formulaire en mode Formulaire en cliquant sur un bouton :
Private Sub btnChangeHeight_Click()
booTall = Not booTall
If booTall Then
lngHeight = 12400 ' (twips)
Else
lngHeight = 1200
End If
Me.Detail.Height = lngHeight
Me.Repaint
Debug.Print Me.Detail.Height
End Sub
La hauteur change -- Debug.Print
le dit, et une barre de défilement verticale apparaît lorsque booTall
est True
. Mais le formulaire ne changera pas sa dimension verticale à l'écran.
J'ai aussi essayé ceci, sans succès (en m'assurant que mon bouton était sur l'en-tête du formulaire) :
Me.Detail.Visible = booTall
La solution semble dépendre des propriétés de la section Formulaire et Détails du formulaire : Redimensionnable, Hauteur automatique, peut-être Peut croître, etc.Mais j'ai joué avec ça et rien ne fonctionne.
Je comprends que les contrôles qui se chevauchent et d'autres éléments peuvent empêcher les ajustements de hauteur, j'ai donc réduit le formulaire à une disposition minimale.J'utilise Access version 2007/2010.
Quelques informations complémentaires : Ce sur quoi je travaille actuellement, ce sont deux sous-formulaires, (A) ci-dessus et (B) ci-dessous, qui peuvent être réduits ou développés indépendamment.Il s'agit d'un formulaire de prise de décision contenant BEAUCOUP de données.Je pensais que si je réduisais la hauteur de (A) ou (B), le CanShrink
propriété de Detail
entraînerait une modification de la dimension globale du formulaire.En fait, je pense l'avoir fait il y a quelques années en utilisant Access 2003.Quant à l'utilisation de Maximiser...nous configurons ce formulaire comme réutilisable, plusieurs instances peuvent s'ouvrir.
La solution
"...modifiez la hauteur du formulaire en mode Formulaire en cliquant sur un bouton"
Utilisez le formulaire .Move
méthode pour changer la taille du formulaire.Cet exemple fait basculer la hauteur de mon formulaire entre 4 044 et 8 000 twips.
Private Sub btnChangeHeight_Click()
Dim lngHeight As Long
If Me.WindowHeight = 4044 Then
lngHeight = 8000
Else
lngHeight = 4044
End If
Me.Move Me.WindowLeft, Height:=lngHeight
End Sub
Autres conseils
J'ai eu un problème similaire et j'ai constaté que même si je cachais les champs (contrôles), je ne voulais pas voir que la hauteur des détails ne diminuerait pas suffisamment.J'ai découvert que si je déplaçais les contrôles que je voulais masquer (donc définissez les propriétés .Visible et .Top), alors Detail.Height serait réduit à ce que je voulais.C'est comme si même l'accès caché refusait d'ignorer les contrôles cachés