Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Urbe Tecnologica en 3 Enero 2010, 18:54 pm



Título: Ajustar a distintas resoluciones de pantalla ?
Publicado por: Urbe Tecnologica en 3 Enero 2010, 18:54 pm
Tengo una aplicacion terminada, sencilla, pero terminada. La comprobe y salve los errores. Ahora bien, una vez que la llevo a distintas pc o notebooks con distintos SO funciona bien, pero el problema es que como son distintas resoluciones de pantallas en la notebook de 15" sale la ventanita gigante y se pierden detalles, botones, etc, en el lcd de 21" sale excelente ( es donde la trabaje) y en un CRT de 17 " sale mas o menos, pero bien...como deberia hacer para que se autoajuste o por lo menos que en un monitor CRT de 15 " o en la notebook salga bien ??

Probe con el metodo Resize y no me sale...busque en google pero no es lo que necesito....y en el buscador de aqui tampoco encontre...por ahora, pero seguire buscando...si alguien tiene idea paseme el aviso, gracias !!  ;)


Título: Re: Ajustar a distintas resoluciones de pantalla ?
Publicado por: Shell Root en 3 Enero 2010, 19:02 pm
Dicen que con esto, se soluciona. Pero nose que pasará con los objetos dentro del formulario.
Código
  1. Me.Height = Screen.Height
  2. Me.Width = Screen.Width


Título: Re: Ajustar a distintas resoluciones de pantalla ?
Publicado por: BlackZeroX en 3 Enero 2010, 19:13 pm
o mejor es obtener la resulucion maxima posible verificar si es posible redimencionar la resolucion en este monitor y si es asi mejor redimencionar la resolucion ma sno la del formulario y si la resolucion no es aguantada por el monitor actual entonces mandar un mensaje de incompatibilidad con el monitor respecto a las resoluciones adminisbles del monitor

aqui un enlace que demuestra como cambair las dichas resoluciones.

http://www.recursosvisualbasic.com.ar/htm/listado-api/api-23.htm

Dulces Lunas!¡.



Título: Re: Ajustar a distintas resoluciones de pantalla ?
Publicado por: BlackZeroX en 3 Enero 2010, 19:15 pm
a se me olvidaba y centrar el formulario respecto a el monitor

Dulces Lunas!¡.


Título: Re: Ajustar a distintas resoluciones de pantalla ?
Publicado por: seba123neo en 3 Enero 2010, 19:23 pm
el tema no es asi de facil, por mas que busques, tenes varios codigos para que cuando se resize el form se adapten los controles adentro. lo que tenes que saber es como administrar los controles en el formulario para que con algun codigo en el evento resize los puedas adaptar y que esten siempre con la mima forma, como lo hace windows con las ventanas fijate, siempre opte por hacer las ventanas con tamaño "fijo", asi no tengo que estar lidiando con esto, en .NET es mas facil el tema.

estaria beno ver una captura de la ventana.

saludos.


Título: Re: Ajustar a distintas resoluciones de pantalla ?
Publicado por: Urbe Tecnologica en 3 Enero 2010, 21:40 pm
Si como dice sebas se puede optar por dejar el form centrado al iniciarse y la propiedad maxbutton en false que fue por lo que opte ahora, pero el tema es que de todos modos al ser desarrollada en un monitor de alta resolucion por mas que lo haga en una ventanita, al pasar a un CRT de esos que todavia se usan en muchas oficinas la ventanita queda ventanota  :P

En recursosVB encontre y use el ejemplo y esta bueno...pero no me soluciona el tema...
:¬¬

bueno igual gracias por la atencion, lo que voy hacer es achicar la ventana hasta dejarla mas o menos en algo "decente" que se vea bien en un lcd, crt o ntbook...mas alla que lo importante es el funcionamiento del programa, a la gente le gusta ver una interfaz agradable y eso es importante para lograr meter el producto en el mercado, calculo... ;)


Título: Re: Ajustar a distintas resoluciones de pantalla ?
Publicado por: MCKSys Argentina en 3 Enero 2010, 22:50 pm
Hola!

Quizás puedas sacar algo de esto:

Código:
Public Sub AdaptarToResolucion(Formulario As Form)
'Propósito:
'          Adapta los controles de un formulario en tiempo de ejecución
'          dependiendo de la resolución de la pantalla.
'Parámetros:
'           Formulario: Variable tipo form que será redimensionada.
'
Dim ControlForm
Dim ES_TAB As Boolean
Dim Cuad As RECT
Dim Res As Long
Dim CoordX As Single

Err.Clear

Res = GetWindowRect(GetDesktopWindow, Cuad)
If Res = 0 Then Exit Sub
CoordX = Cuad.Right 'Screen.Width / Screen.TwipsPerPixelX

If (Not ResOK) Or (CoordX = ResXDisenio) Then Exit Sub

On Error Resume Next

proporcional = CoordX / 800

If Formulario.WindowState <> 2 Then
   Formulario.Width = Formulario.Width * proporcional
   Formulario.Height = Formulario.Height * proporcional
End If

For Each ControlForm In Formulario.Controls
    ControlForm.Top = ControlForm.Top * proporcional
    If ControlForm.Left >= 0 Then
        ControlForm.Left = ControlForm.Left * proporcional
        ControlForm.Width = ControlForm.Width * proporcional
        Err = 0
        ControlForm.FontSize = Int(Val(ControlForm.FontSize * proporcional)) - 1
        If Err <> 0 Then
            Err = 0
            ControlForm.Font.Size = Int(Val(ControlForm.Font.Size * proporcional)) - 1
        End If
        If Err <> 0 Then
            ControlForm.Title.Font.Size = Int(Val(ControlForm.Title.Font.Size * proporcional)) - 1
        End If
        Err = 0
        ControlForm.Font.Name = "Arial"
        If Err <> 0 Then
            Err = 0
            ControlForm.FontName = "Arial"
        End If
        If Err <> 0 Then
            Err = 0
            ControlForm.Font = "Arial"
        End If
        If Err <> 0 Then
            ControlForm.Title.Font.Name = "Arial"
        End If
    Else
        If ControlForm.Tag = "ANCHO" Then
            ControlForm.Left = (75000 - Abs(ControlForm.Left)) * proporcional
            ControlForm.Width = ControlForm.Width * proporcional
            ControlForm.FontSize = Int(Val(ControlForm.FontSize * proporcional)) - 1
            ControlForm.Font.Size = Int(Val(ControlForm.Font.Size * proporcional)) - 1
            ControlForm.Font.Name = "Arial"
            ControlForm.FontName = "Arial"
            ControlForm.Font = "Arial"
            ControlForm.Title.Font.Name = "Arial"
            ControlForm.Title.Font.Size = Int(Val(ControlForm.Title.Font.Size * proporcional)) - 1
        End If
    End If
    ControlForm.TabMaxWidth = ControlForm.TabMaxWidth * proporcional
    ControlForm.Height = ControlForm.Height * proporcional
    ControlForm.X1 = ControlForm.X1 * proporcional
    ControlForm.X2 = ControlForm.X2 * proporcional
    ControlForm.Y1 = ControlForm.Y1 * proporcional
    ControlForm.Y2 = ControlForm.Y2 * proporcional
Next ControlForm
End Sub

No sé si anda para todos los controles pues es algo que hice hace mucho...

Ah! Adapta a 800x600...
Osea:
Código:
Public Const ResXDisenio = 800

Public Function ResOK() As Boolean
Dim Cuad As RECT
Dim Res As Long
Dim CoordX As Single

ResOK = False


Res = GetWindowRect(GetDesktopWindow, Cuad)
If Res = 0 Then
    ResOK = True
    Exit Function
End If

CoordX = Cuad.Right 'Screen.Width / Screen.TwipsPerPixelX

If CoordX >= ResXDisenio Then
    ResOK = True
End If
End Function

NOTA: Fíjate que el if que compara el Left del control, es paradeterminar si es un Tab. Las orejas del Tab tienen left negativo cuando no estan visibles.

Me faltaba eso  :P...
Saludos!