Formulario independiente de la Resolucion de Pantalla

Iniciado por Partel, 15 Enero 2013, 16:41 PM

0 Miembros y 2 Visitantes están viendo este tema.

Partel

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.


Danyfirex

A mi me funciona perfecto.

seguro pusiste el nombre por defecto de los controles?

Partel

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

seba123neo

#3
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
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Danyfirex

mmm claro porque el ejemplo por defecto tiene 800 x 600

usando GetSystemMetrics lo solucionas.



Código (vb) [Seleccionar]
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

Partel