Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/07/2010, 08:17
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 8 meses
Puntos: 29
Respuesta: Aporte: Auto-ajustar tamaño y posicion de controles

' 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 original
  1. Private Sub Form_Resize()
  2.         Static PorcentajeH As Single
  3.         Static AntWidth As Single
  4.         Static AntHeight As Single
  5.         Static MinimoWidth As Single
  6.         Static EnUso As Integer
  7.         If EnUso = 1 Then Exit Sub
  8.         On Local Error Resume Next
  9.         EnUso = 1
  10.         If Me.WindowState <> vbMinimized Then
  11.           If AntWidth = 0 Then
  12.             AntWidth = Me.Width
  13.             AntHeight = Me.Height
  14.      
  15.             ' AÑADIENDO AQUI "* 0.8" CONSEGUIMOS QUE
  16.            ' EL TAMAÑO MINIMO PERMITIDO Y USADO
  17.            ' SEA INFERIOR AL TAMAÑO ORIGINAL.
  18.            MinimoWidth = Me.Width * 0.8
  19.             ' TAMBIEN SE PUEDE USAR UN VALOR FIJO:
  20.            'MinimoWidth = 1000
  21.            ' SIN EMBARGO ESTO OBLIGA A USAR PARA NUESTROS
  22.            ' CONTROLES UNA FUENTE MAS FLEXIBLE, COMO "Arial".
  23.            ' AÚN ASÍ NO HAY QUE REDUCIRLO MUY POR DEBAJO DE
  24.            ' ESTE 0.8 YA QUE SI LO ENCOGES MUCHO LOS TEXTOS QUEDAN ILEGIBLES.
  25.      
  26.             PorcentajeH = Me.Height / Me.Width
  27.           End If
  28.           If Me.Width < MinimoWidth Then Me.Width = MinimoWidth
  29.           If Me.WindowState <> vbMaximized Then Me.Height = Me.Width * PorcentajeH
  30.      
  31.          ' SOLO HAY QUE AJUSTAR AQUI COMO "TRUE" O "FALSE" SEGUN QUIERAS
  32.         ' AUTO-AJUSTAR O NO LOS TEXTOS Y SI QUIERES QUE SE AJUSTEN
  33.         ' SEGUN EL ALTO O SEGUN EL ANCHO DEL FORM.
  34.          AjustaControlesForm Me, AntHeight, AntWidth, True, False
  35.      
  36.           AntWidth = Me.Width
  37.           AntHeight = Me.Height
  38.      
  39.          ' AQUI VAN LOS CAMBIOS PERSONALIZADOS, COMO AJUSTAR
  40.         ' EL ALTO DE LOS LISTBOX SI HAY ALGUNO.
  41.         'List1.Height = Me.Height - 500
  42.      
  43.         End If
  44.         EnUso = 0
  45.       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.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 03/07/2010 a las 09:04