[RESUELTO] Redimensionar formulario y controles a varios tamaños de pantallas

Iniciado por TUNOVATO, 6 Diciembre 2006, 20:38 PM

0 Miembros y 1 Visitante están viendo este tema.

TUNOVATO

Mi duda es como hacer que controles (listView) contenidos en un formulario se adapten a la variedad de tamaños de pantallas, es decir, 800*600 / 1024*768 / 1280*768 / 1280*1024 se adapte a ella sin descuadrarse ni su tamaño y ubicacion..!!!!

he buscado pero no he encotrado...!!!  a ver quie me puede ayudar

se que existe google.com , pero me presentan ocx de pago.!!!

CeLaYa

debes usar el evento Resize de los controles

por ejemplo


Private Sub Form_Resize()
    listview1.Width = Me.ScaleWidth
    listview1.Height = Me.Scaleheight
End Sub



asi no importa que tamaño tenga el form, el Listview siempre se ajustara
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

TUNOVATO

#2
[size20pt]CeLaYa[/size]


Gracias Compa...!!!!

Encontre otra solucion a mi problema....!!!

Solo se debe adaptar el codigo a los controles contenidos dentro del formulario....!!!! en este caso un ListView y Boton


'Ejemplo de redimensionado seguro de formularios
'
'José Alberca
'alberca@usa.net
'
'Lo unico que hay que hacer es copiar el código que viene en este formulario y adaptarlo al que Ud.
'desee. Específicamente debe revisar el evento Initialize del formulario, donde se definen los valores
'minimos del mismo, asi como el procedimiento ResizeMe. Esto obviamente debido a que cada formulario
'debe tener valores mínimos en cuanto a sus dimensiones y ademas que no necesariamente dos o mas
'formularios poseen los mismos objetos, ni están distribuidos de la misma manera.

Option Explicit

'Variables privadas del formulario
Private MinHeight    As Integer 'Altura minima del formulario (depende del formulario)
Private MinWidth     As Integer 'Ancho minimo del formulario (depende del formulario)
Private CancelResize As Boolean 'Flag que indica si se cancela o no el redimensionado del formulario

'Inicializa los parametros a emplear en el redimensionado
Private Sub Form_Initialize()
   CancelResize = True
   MinHeight = 360
   MinWidth = 480
   CancelResize = False
End Sub

'Valida si se ejecuta el redimensionado
Private Sub Form_Resize()
   If Not CancelResize Then
      If Me.WindowState = vbMaximized Then
         'Redimensiona los  controles
         Call ResizeMe
      ElseIf Not Me.WindowState = vbMinimized Then
         If Width < MinWidth Then
            CancelResize = True
            Width = MinWidth
         End If
         If Height < MinHeight Then
            CancelResize = True
            Height = MinHeight
         End If
         'Redimensiona los  controles
         Call ResizeMe
      End If
   End If
   CancelResize = False
End Sub

'Redimensiona los objetos del formulario
Private Sub ResizeMe()
    If Me.WindowState = vbNormal Or Me.WindowState = vbMaximized Then
        'Ejemplo de código que podría ir en la rutina de redimensioinado
        On Error Resume Next
       
       
        ListView1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight - 100 - Command1.Height
       
       
        Command1.Top = ListView1.Height + 50
        Command1.Left = Me.ScaleWidth - Command1.Width - 50
   
    End If
End Sub

'Descarga el formulario
Private Sub Command1_Click()
   Unload Me
End Sub




CeLaYa

no necesitas complicarlo tanto, todo eso lo puedes hacer asi:


privatge sub Form_Resize()
   On local error resume next
   ListView1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight - 100 - Command1.Height
    Command1.Move ListView1.Height + 50, Me.ScaleWidth - Command1.Width - 50, command1.Width, Command1.Height
    On Local error goto 0
end sub


La linea "On Local Error resume next" activa el control de errores asi si minimizas el form o lo pones de un tamaño muy pequeño en el que no se pueda ver el control tu programa no fallara. Al final pongo "On Local Error Goto 0" para desactivar el control de errores
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

Carmol

  Saludos.
  Yo quisiera ir mas alla con la solucion del redimensionar el formulario y los controles y quisiera preguntarles como se haria para redimensionar tambien el tamaño de la letra?. Porque no tendria sentido tener un form maximizado con una letra 10 por ejemplo, la misma que se veria nien cuando el form este al tamaño normal.
   Gracias...................

CeLaYa

Cita de: Carmol en  6 Abril 2007, 04:46 AM
  Saludos.
  Yo quisiera ir mas alla con la solucion del redimensionar el formulario y los controles y quisiera preguntarles como se haria para redimensionar tambien el tamaño de la letra?. Porque no tendria sentido tener un form maximizado con una letra 10 por ejemplo, la misma que se veria nien cuando el form este al tamaño normal.
   Gracias...................



mmm, a ver prueba esto a ver si es a lo que te refieres:
solo necesitas poner un label en un form y copiar este código:



Private Sub Form_Resize()
   
    Dim i As Integer, h As Long, w As Long
    Dim s As String
   
    Label1.Height = Me.ScaleHeight
    Label1.Width = Me.Width
   
    i = 8
    h = 0
    s = Label1.Caption
   
    Printer.Font = Label1.Font
    Printer.FontSize = 8
   
    While h < Me.ScaleHeight And w < Me.ScaleWidth
       
        i = i + 1
       
        h = Printer.TextHeight(s)
        w = Printer.TextWidth(s)
       
        Printer.FontSize = i
       
    Wend
   
    Label1.FontSize = i
   
End Sub



"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.