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.!!!
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
[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
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
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...................
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