Programación General > Visual Basic 6.0 e inferiores
No Me Funciona Este Código
DiabloRojo:
Hola. Qué tal amigos del foro?
Les comento que estoy tratando de lograr que el formulario principal de una aplicación que estoy desarrollando modifique su tamaño (propiedades Height y Width) y posición (Left y Top) de acuerdo a la resolución de pantalla que elija un usuario. Para este propósito utilizo un control SysInfo que detecta el momento en que se elige otra resolución de pantalla. No sé que estoy haciendo mal pero este código no me resulta, es decir, no cambia ni el tamaño del form ni cambia su posición en la pantalla. Este es el código que estoy empleando:
--- Código: Text --- Private Sub SysInfo1_DisplayChanged() Dim miwidth As Long Dim miheight As Long Text1.Text = SysInfo1.WorkAreaTop Text2.Text = SysInfo1.WorkAreaLeft Text3.Text = SysInfo1.WorkAreaHeight Text4.Text = SysInfo1.WorkAreaWidth ' 'Calculamos la resolución miwidth = Screen.Width / 15 miheight = Screen.Height / 15 ' 'esto no actualiza el tamaño del form :-S If ((miwidth = 800) And (miheight = 600)) Then Me.Width = SysInfo1.WorkAreaWidth Me.Height = SysInfo1.WorkAreaHeight Me.Left = 0 Me.Top = 0 ElseIf ((miwidth > 800) And (miheight > 600)) Then Me.Width = (Screen.Width * 0.75) 'el ancho es el 75% del ancho de la pantalla Me.Height = (Screen.Height * 0.75) 'el largo es el 75% de la pantalla Me.Left = (Screen.Width - Me.Width) / 2 ' Centra el form horizontalmente Me.Top = (Screen.Height - Me.Height) / 2 'Centra el form verticalmente ElseIf ((miwidth < 800) And (miheight < 600)) Then MsgBox "resolución no soportada por la aplicación" End IfEnd Sub
Alguien sabe qué está pasando? Hay una mejor manera de hacer lo que pretendo?
De antemano agradezco a todos su ayuda.
DiabloRojo
cpmario:
En mi equipo esto si funciona:
--- Código: Text --- 'Calculamos la resolución miwidth = Screen.Width / 15 miheight = Screen.Height / 15 Proporciona en forma correcta la resolución de pantalla.
Esto también funciona
--- Código: Text --- ElseIf ((miwidth > 800) And (miheight > 600)) Then Me.Width = (Screen.Width * 0.75) 'el ancho es el 75% del ancho de la pantalla Me.Height = (Screen.Height * 0.75) 'el largo es el 75% de la pantalla Me.Left = (Screen.Width - Me.Width) / 2 ' Centra el form horizontalmente Me.Top = (Screen.Height - Me.Height) / 2 'Centra el form verticalmente Coloca la forma en el centro y al 75% del tamaño de la pantalla.
Como no proporcionas el código del control o clase "SysInfo1" no puedo decirte nada al respecto.
:comp:
DiabloRojo:
Hola cpmario. Gracias por tu pronta respuesta. Te comento que el control SysInfo es un activeX de VB que puedes añadir en la sección de componentes de tu proyecto. De éste sólo uso el evento DisplayChanged para averiguar la resolución que toma la pantalla y a partir de ésta hacer los cambios al form. Lamentablemente en mi equipo no funciona :( . Pienso que tal vez sea mi máquina... De cualquier forma si hay alguna sugerencia o alguien tiene algún otro modo de averiguar la resolución de la pantalla y de cambiar el tamaño del form en consecuencia le estaré muy agradecido.
Nuevamente cpmario muchas gracias por responder a este post.
DiabloRojo
cpmario:
Se puede modificar tu rutina sin usar el componente ActiveX.
--- Código: Text --- Dim miwidth As Long Dim miheight As Long miwidth = Screen.Width / 15 miheight = Screen.Height / 15 If ((miwidth = 800) And (miheight = 600)) Then Me.Width = Screen.Width Me.Height = Screen.Height - 350 Me.Left = 0 Me.Top = 0 ElseIf ((miwidth > 800) And (miheight > 600)) Then Me.Width = (Screen.Width * 0.75) 'el ancho es el 75% del ancho de la pantalla Me.Height = (Screen.Height * 0.75) 'el largo es el 75% de la pantalla Me.Left = (Screen.Width - Me.Width) / 2 ' Centra el form horizontalmente Me.Top = (Screen.Height - Me.Height) / 2 'Centra el form verticalmente ElseIf ((miwidth < 800) And (miheight < 600)) Then MsgBox "resolución no soportada por la aplicación" End If
Te quería adjuntar un archivo ZIP con un ejemplo, pero aparece un error en el foro que dice "No puedes adjuntar este tipo de archivos" ? ignoro el motivo.....
:comp:
DiabloRojo:
Hola cpmario. No había tenido tiempo para responder... con las modificaciones que me propones... se puede saber en tiempo real si el usuario a cambiado la resolución de la pantalla?
Saludos.
DiabloRojo
Navegación
[#] Página Siguiente
Ir a la versión completa