Ajustar a distintas resoluciones de pantalla ?

Iniciado por Urbe Tecnologica, 3 Enero 2010, 18:54 PM

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

Urbe Tecnologica

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 !!  ;)

Shell Root

Dicen que con esto, se soluciona. Pero nose que pasará con los objetos dentro del formulario.
Código (vb) [Seleccionar]
Me.Height = Screen.Height
Me.Width = Screen.Width
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

BlackZeroX

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

The Dark Shadow is my passion.

BlackZeroX

a se me olvidaba y centrar el formulario respecto a el monitor

Dulces Lunas!¡.
The Dark Shadow is my passion.

seba123neo

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

Urbe Tecnologica

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... ;)

MCKSys Argentina

#6
Hola!

Quizás puedas sacar algo de esto:


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:

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!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."