' ESTA SUB AJUSTA EL TAMAÑO DE LOS CONTROLES DE UN FORMULARIO
' AL TAMAÑO DE ESTE, Y OPCIONALMENTE EL TAMAÑO DE LOS TEXTOS.
' LOS PARAMETROS SON 5.
' 3 OBLIGATORIOS: 1-EL FORMULARIO, 2-EL ANTERIOR HEIGHT,3-EL ANTERIOR WIDTH
' 2 OPCIONALES: 4-UN BOOLEAN PARA AJUSTAR O NO LAS FUENTES Y 5-OTRO BOOLEAN
' PARA AJUSTAR LAS FUENTES AL ALTO O AL ANCHO DEL FORM.
' POR DEFECTO SE AJUSTAN LAS FUENTES SEGÚN EL ALTO DEL FORM.
' SE USA DESDE EL FORM_RESIZE, Y PARA ELLO
' ESTOS SERIAN LOS 2 MODOS GENERALES:
' MODO 1
' ESTE RESIZE ES EL RECOMENDADO SIEMPRE QUE
' LA NATURALEZA DEL FORM NO OBLIGUE A USAR EL OTRO.
Código vb:
Ver originalPrivate Sub Form_Resize()
Static PorcentajeH As Single
Static AntWidth As Single
Static AntHeight As Single
Static MinimoWidth As Single
Static EnUso As Integer
If EnUso = 1 Then Exit Sub
On Local Error Resume Next
EnUso = 1
If Me.WindowState <> vbMinimized Then
If AntWidth = 0 Then
AntWidth = Me.Width
AntHeight = Me.Height
' AÑADIENDO AQUI "* 0.8" CONSEGUIMOS QUE
' EL TAMAÑO MINIMO PERMITIDO Y USADO
' SEA INFERIOR AL TAMAÑO ORIGINAL.
MinimoWidth = Me.Width * 0.8
' TAMBIEN SE PUEDE USAR UN VALOR FIJO:
'MinimoWidth = 1000
' SIN EMBARGO ESTO OBLIGA A USAR PARA NUESTROS
' CONTROLES UNA FUENTE MAS FLEXIBLE, COMO "Arial".
' AÚN ASÍ NO HAY QUE REDUCIRLO MUY POR DEBAJO DE
' ESTE 0.8 YA QUE SI LO ENCOGES MUCHO LOS TEXTOS QUEDAN ILEGIBLES.
PorcentajeH = Me.Height / Me.Width
End If
If Me.Width < MinimoWidth Then Me.Width = MinimoWidth
If Me.WindowState <> vbMaximized Then Me.Height = Me.Width * PorcentajeH
' SOLO HAY QUE AJUSTAR AQUI COMO "TRUE" O "FALSE" SEGUN QUIERAS
' AUTO-AJUSTAR O NO LOS TEXTOS Y SI QUIERES QUE SE AJUSTEN
' SEGUN EL ALTO O SEGUN EL ANCHO DEL FORM.
AjustaControlesForm Me, AntHeight, AntWidth, True, False
AntWidth = Me.Width
AntHeight = Me.Height
' AQUI VAN LOS CAMBIOS PERSONALIZADOS, COMO AJUSTAR
' EL ALTO DE LOS LISTBOX SI HAY ALGUNO.
'List1.Height = Me.Height - 500
End If
EnUso = 0
End Sub
' ESTE RESIZE DIFIERE DEL SIGUIENTE EN QUE MANTIENE
' LA RELACION DE ASPECTO DEL ORIGINAL.
' NO PERMITE CAMBIAR EL ALTO O EL ANCHO POR SEPARADO.
' DE ESTE MODO SIEMPRE DEBE QUEDAR BIEN AJUSTADO.