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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top