Saludos, estoy liado con un tema que seguro podeis ayudarme.
Los formularios no se representan igual en todos los PC's, está en función de la resolución de la pantalla.
Los Form's y sus Label's, Text's etc. no consigo que se coloquen, quedan fuera del form sin verse, etc.
Estoy siguiendo esto de MSN:
http://support.microsoft.com/kb/182070/es
Lo he copiado en un nuevo proyecto y no me funciona, el tamaño del Form si lo ajusta, pero los demás TEXT, o Label, no los cambia ni de tamaño ni los reubica, quedan invisibles, dependiendo de donde se encuentren en la pantalla. inicial.
Podeis ayudarme ?
Saludos.
A mi me funciona perfecto.
seguro pusiste el nombre por defecto de los controles?
Si, por defecto y coinciden los nombres.
Pero no funciona..
Lo hace a la inversa..
Lo he creado en resolución de pantalla baja y cuando lo ejecuto en uan resolución alta lo que ocurre es que se hacen mayores los botones y las letras de los label.
Saludos
lo que tenes que hacer es ajustar los controles al formulario de tal forma que mantengan la posicion y relacion entre unos y otros siempre igual, si haces eso, automaticamente se ajustara a la resolucion que haya en la pc, las letra de los controles no deben cambiar de tamaño, aca tenes como ajustar los controles al form, es casi lo mismo que la propiedad Anchor de .NET que permite hacer justamente esto.
Redimensionar controles (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/246-redimensionar-controles.htm)
mmm claro porque el ejemplo por defecto tiene 800 x 600
usando GetSystemMetrics lo solucionas.
Option Explicit
Private Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long
Const SM_CXSCREEN As Long = 0
Const SM_CYSCREEN As Long = 1
Dim MyForm As FRMSIZE
Dim DesignX As Integer
Dim DesignY As Integer
Private Sub Form_Load()
Dim ScaleFactorX As Single, ScaleFactorY As Single ' Scaling factors
' Size of Form in Pixels at design resolution
DesignX = GetSystemMetrics(SM_CXSCREEN) ' aquí para X
DesignY = GetSystemMetrics(SM_CYSCREEN) ' aquí para Y
RePosForm = True ' Flag for positioning Form
DoResize = False ' Flag for Resize Event
' Set up the screen values
Xtwips = Screen.TwipsPerPixelX
Ytwips = Screen.TwipsPerPixelY
Ypixels = Screen.Height / Ytwips ' Y Pixel Resolution
Xpixels = Screen.Width / Xtwips ' X Pixel Resolution
' Determine scaling factors
ScaleFactorX = (Xpixels / DesignX)
ScaleFactorY = (Ypixels / DesignY)
ScaleMode = 1 ' twips
'Exit Sub ' uncomment to see how Form1 looks without resizing
Resize_For_Resolution ScaleFactorX, ScaleFactorY, Me
Label1.Caption = "Current resolution is " & Str$(Xpixels) + _
" by " + Str$(Ypixels)
MyForm.Height = Me.Height ' Remember the current size
MyForm.Width = Me.Width
End Sub
Private Sub Form_Resize()
Dim ScaleFactorX As Single, ScaleFactorY As Single
If Not DoResize Then ' To avoid infinite loop
DoResize = True
Exit Sub
End If
RePosForm = False
ScaleFactorX = Me.Width / MyForm.Width ' How much change?
ScaleFactorY = Me.Height / MyForm.Height
Resize_For_Resolution ScaleFactorX, ScaleFactorY, Me
MyForm.Height = Me.Height ' Remember the current size
MyForm.Width = Me.Width
End Sub
Private Sub Command1_Click()
Dim ScaleFactorX As Single, ScaleFactorY As Single
DesignX = Xpixels
DesignY = Ypixels
RePosForm = True
DoResize = False
' Set up the screen values
Xtwips = Screen.TwipsPerPixelX
Ytwips = Screen.TwipsPerPixelY
Ypixels = Screen.Height / Ytwips ' Y Pixel Resolution
Xpixels = Screen.Width / Xtwips ' X Pixel Resolution
' Determine scaling factors
ScaleFactorX = (Xpixels / DesignX)
ScaleFactorY = (Ypixels / DesignY)
Resize_For_Resolution ScaleFactorX, ScaleFactorY, Me
Label1.Caption = "Current resolution is " & Str$(Xpixels) + _
" by " + Str$(Ypixels)
MyForm.Height = Me.Height ' Remember the current size
MyForm.Width = Me.Width
End Sub
saludos
Lo miro y realizo pruebas...
Gracias