Cambiar el tamaño del formulario en MS Access cambiando Detail.Height
-
21-12-2019 - |
Pregunta
Quiero que el usuario pueda cambiar la altura del formulario mientras está en la Vista Formulario haciendo clic en un botón:
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 altura cambia... Debug.Print
lo dice, y aparece una barra de desplazamiento vertical cuando booTall
es True
. Pero el formulario no cambiará su dimensión vertical en pantalla.
También probé esto, sin éxito (asegurándome de que mi botón estuviera en el encabezado del Formulario):
Me.Detail.Visible = booTall
La solución parece depender de las propiedades de la sección Formulario y Detalle del formulario: Redimensionable, Altura automática, tal vez Puede crecer, etc.Pero he jugueteado con ellos y nada funciona.
Entiendo que los controles superpuestos y otras cosas pueden impedir ajustes de altura, por lo que reduje el formulario a un diseño mínimo.Estoy usando la versión 2007/2010 de Access.
Alguna información adicional: En realidad estoy trabajando en dos subformularios, (A) arriba y (B) abajo, que se pueden contraer o expandir de forma independiente fuera de la vista.Esto es para un formulario de toma de decisiones con MUCHOS datos.Pensé que si colapsaba a la altura de (A) o (B), el CanShrink
propiedad de Detail
causaría que la dimensión general del formulario cambiara.De hecho, creo que hice esto hace unos años usando Access 2003.En cuanto al uso de Maximizar...Estamos configurando este formulario como reutilizable, se pueden abrir varias instancias.
Solución
"...cambie la altura del formulario mientras está en la Vista Formulario haciendo clic en un botón"
Utilice el formulario .Move
Método para cambiar el tamaño del formulario.Esta muestra alterna la altura de mi formulario entre 4044 y 8000 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
Otros consejos
Tuve un problema similar y descubrí que incluso si ocultaba los campos (controles), no quería ver que la altura del detalle no se reduciría lo suficiente.Descubrí que si movía los controles que quería ocultar (así que establecía las propiedades .Visible y .Top), entonces Detail.Height se reduciría a lo que quería.Es como si incluso el Access oculto se negara a ignorar los controles ocultos.