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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top