Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   Problema de visualizacion (http://www.forosdelweb.com/f69/problema-visualizacion-596953/)

etxebe 16/06/2008 07:39

Problema de visualizacion
 
Hola a todos:

He hecho mi aplicacion en mi PC y no tengo ningun problema. Sin embargo, cuando pruebo el ejecutable en el portatil, no se ve toda la pantalla. Solo se visualiza la parte superior izquierda de la ventana, como si estuviera recortada. Como puedo solucionarlo?? Alguien puede ayudarme??

Gracias de antemano. Un saludo,

Agur.

Txoco 16/06/2008 11:00

Respuesta: Problema de visualizacion
 
Hola!

Esa aplicación está hecha en VB6? Has comprobado las propiedades WindowState y BorderStyle del form?

etxebe 17/06/2008 00:41

Respuesta: Problema de visualizacion
 
Si, la aplicacion es de VB6. Las propiedades que dices las tengo asi:

WindowState = Normal
BorderStyle = Sizable

Pero no creo que influyan, ya que cuando maximizo la ventana parece como si no entrara en el monitor...pero eso solo cuando ejecuto el programa en el portatil. Ademas, si restauro la ventana no aparece ningun ScrollBar para poder ver todo el formulario. Como puedo hacer esto?

Insomnia 17/06/2008 01:51

Respuesta: Problema de visualizacion
 
Hola

Puede ser por tema de resolución de pantalla, es decir, si en tu ordenador lo has programado en una resolución de 1024x768 ocupando toda la pantalla y luego en el portátil utilizas una resolución de 800x600 no vas a conseguir ver la pantalla completa.

Comprueba que tienes la misma resolución en los dos equipos.

Agur.

etxebe 17/06/2008 04:30

Respuesta: Problema de visualizacion
 
Hola Insomnia

Creo que tienes razon con lo que dices. Es un problema de resolucion. En mi ordenador tengo una resolucion de 1280 x 1024 y he hecho toda la aplicacion con esta configuracion. Sin embargo, la resolucion maxima del portatil es de solo 1024 x 768 y por eso no se ve toda la ventana.

El problema es que si quiero que se vea en el portatil, tengo que cambiar la configuracion del ordenador y despues cambiar todas las ventanas de la aplicacion, lo que me llevaria mucho tiempo. Seria una locura!!

Existe alguna manera para que, segun la resolucion de cada ordenador, se aplique algun zoom en la aplicacion?? O algo parecido...

David 17/06/2008 06:54

Respuesta: Problema de visualizacion
 
Cita:

Iniciado por etxebe (Mensaje 2451853)
Hola Insomnia

Creo que tienes razon con lo que dices. Es un problema de resolucion. En mi ordenador tengo una resolucion de 1280 x 1024 y he hecho toda la aplicacion con esta configuracion. Sin embargo, la resolucion maxima del portatil es de solo 1024 x 768 y por eso no se ve toda la ventana.

El problema es que si quiero que se vea en el portatil, tengo que cambiar la configuracion del ordenador y despues cambiar todas las ventanas de la aplicacion, lo que me llevaria mucho tiempo. Seria una locura!!

Existe alguna manera para que, segun la resolucion de cada ordenador, se aplique algun zoom en la aplicacion?? O algo parecido...

Creo que dependiendo de cuáles son los controles que tienes en tu ventana te será más difícil crear el código para ajustar a la configuración del monitor que cambiarlo manualmente. Pero si de todos modos quieres hacerlo puedes enviarnos una captura de pantalla de tu ventana para que sepamos cómo ayudarte...

Txoco 17/06/2008 12:16

Respuesta: Problema de visualizacion
 
Hola etxebe:

Probablemente te interese utilizar un formulario MDI para alojar todos los formularios de tu aplicación. Si no sabes qué es esto, abre una base de datos que tengas en Access y después abre una o dos consultas o tablas. Verás que tienes varias ventanas y que si las mueves, no solo no se salen de la principal, si no que te aparecerán las barras de desplazamiento. Esa es la idea del MDI (Multiple Document Interface - Interfaz de Múltiples Documentos).

Para que te funcione, tienes que agregar un nuevo formulario MDI (hay una opción explícita en VB). Ten en cuenta que sólo puedes tener un form MDI por aplicación.

Después, establece en cada uno de tus formularios la propiedad MDIChild a True, verás que les cambia el icono en la vista de proyecto.

Y ya está. Ejecuta el proyecto sin tocar nada y redimensiona el form MDI para ver cómo aparecen las barras si alguna ventana no cabe en el area.

Como ventaja adicional, puedes centralizar todas las opciones en el menú del Form MDI, y agregar un menú al estilo del "Ventana" del propio VB, en la que te sale una lista de todos los formularios abiertos.

También te recomiendo para estos casos un programita que me pasó una vez un amigo, se llama Sizer, es gratuito, y te permite elegir el tamaño que quieres que tenga una ventana cualquiera. Con esto puedes probar cómo quedan tus formularios a cualquier resolución.

Insomnia 18/06/2008 01:29

Respuesta: Problema de visualizacion
 
Hola

Creo que como dice David el Grande la opción más rápida es volver a dimensionar los formularios a mano, la forma correcta es por ejemplo utilizando un control de ComponentOne que permite que cuando el usuario redimensiona un formulario todos los controles incluidos en el mismo se adapten al nuevo tamaño del formulario o en su defecto aparezcan barras de desplazamiento.

El nombre del control es ComponentOne SizerOne que como indica en una de sus características sirve para mostrar forms en distintas resoluciones

Cita:

Controls all resolutions
Looking for a tool that adds resolution-independence to your forms so they keep looking great no matter how your user resizes them? SizerOne fits the bill: EGA, VGA, VSGA—it doesn't matter!
El único inconveniente que tiene el control es que es de pago.

--Saludos--

etxebe 18/06/2008 03:49

Respuesta: Problema de visualizacion
 
Hola a todos:

Con respecto a los formularios MDI, lo he probado pero sigo teniendo el mismo problema...

El control de ComponentOne parece que esta muy bien pero si es de pago, no me lo puedo permitir...

Al final, se mas dificil o no, he decidido intentar hacerlo mediante codico. He estado buscando por ahi, y mas o menos voy avanzando. Pero tengo un problema. Este es el codigo. Haber que os parece:

Sub SizeAdaptor(y As Form)
Dim Ctl As Control
Dim sCtlType As String

' Invocar la rutina que calcula los factores de correccion de tamaño
Call Factores
' Si el uso y el diseño se realizan con una misma resolución de pantalla,
' no hace falta corrección alguna y se puede salir de la subrutina.
If SizingFactor = 1 Then
Exit Sub
End If
' Si el uso y el diseño se realizan con resoluciones de pantalla distintas
' hay que modificar las medidas y ubicación de cada componente.
' Adaptar el formulario en si.
' Esconder el formulario y su contenido mientras se hace la adaptación.
y.Visible = False
y.Left = 0
y.Top = 0
y.Height = Screen.Height
y.Width = Screen.Width

For Each Ctl In y.Controls
sCtlType = TypeName(Ctl)

If sCtlType = "Line" Then
Call LineResizing(Ctl)
ElseIf sCtlType = "SSTab" Then
Call SSTabResizing(Ctl)
ElseIf sCtlType = "ListView" Then
Call ListViewResizing(Ctl)
ElseIf sCtlType = "ComboBox" Then
Call ComboResizing(Ctl)
ElseIf sCtlType = "ListBox" Then
Call ComboResizing(Ctl)
ElseIf sCtlType = "CommandButton" Then
Call CommButtonResizing(Ctl)
ElseIf sCtlType = "TextBox" Then
Call TextBoxResizing(Ctl)
ElseIf sCtlType = "Label" Then
Call LabelResizing(Ctl)
ElseIf sCtlType = "PictureBox" Then
Call PictResizing(Ctl)
ElseIf sCtlType = "Menu" Then
'No hace nada
ElseIf sCtlType = "StatusBar" Then
'Aqui no se
ElseIf sCtlType = "Toolbar" Then
'Aqui no se
ElseIf sCtlType = "CommonDialog" Then
'No hace nada
ElseIf sCtlType = "ImageList" Then
'No hace nada
Else
Call ControlsResizing(Ctl)
End If
Next
' Una vez completado el proceso de adaptacion volvemos a mostrar el formulario
' con todo su contenido.
y.Visible = True
End Sub

Sub Factores()
' Se hace uso de la función Screen, accesible solamente durante el procesado
' del programa, que da el ancho y alto de la pantalla en twips.
SizingFactor = 0
HorFactor = Screen.Width / 19200
VerFactor = Screen.Height / 15360
' Si la pantalla de uso tiene la misma resolución que la de diseño
' no habrá que hacer nada, lo cual indicamos con la bandera SizingFactor igual a 1.
If HorFactor = 1 And VerFactor = 1 Then
SizingFactor = 1
End If
End Sub

Sub SSTabResizing(x As Control)
x.Left = x.Left * HorFactor
x.Top = x.Top * VerFactor
x.Width = x.Width * HorFactor
x.Height = x.Height * VerFactor
x.Font.Size = x.Font.Size * VerFactor
End Sub

Sub ListViewResizing(x As Control)
x.Left = x.Left * HorFactor
x.Top = x.Top * VerFactor
x.Width = x.Width * HorFactor
x.Height = x.Height * VerFactor
x.Font.Size = x.Font.Size * VerFactor
End Sub

Sub LineResizing(x As Control)
' Redimensiona (incluido grosor) y reubica una linea recta
x.X1 = x.X1 * HorFactor
x.X2 = x.X2 * HorFactor
x.Y1 = x.Y1 * VerFactor
x.Y2 = x.Y2 * VerFactor
x.BorderWidth = x.BorderWidth * VerFactor
End Sub

Sub ComboResizing(x As Control)
'adapta medidas y ubicación de una caja combo
x.Left = x.Left * HorFactor
x.Top = x.Top * VerFactor
x.Width = x.Width * HorFactor
'x.Height = x.Height * VerFactor
End Sub

Sub CommButtonResizing(x As Control)
'Adapta medidas y ubicación de un botón de comando
x.Left = x.Left * HorFactor
x.Top = x.Top * VerFactor
x.Width = x.Width * HorFactor
x.Height = x.Height * VerFactor
x.Font.Size = x.Font.Size * HorFactor
End Sub

Sub TextBoxResizing(x As Control)
x.Left = x.Left * HorFactor
x.Top = x.Top * VerFactor
x.Width = x.Width * HorFactor
x.Height = x.Height * VerFactor
x.FontSize = x.FontSize * VerFactor
End Sub

Sub LabelResizing(x As Control)
' Redimensiona y reubica un label
x.Left = x.Left * HorFactor
x.Top = x.Top * VerFactor
x.Width = x.Width * HorFactor
x.Height = x.Height * VerFactor
x.Font.Size = x.Font.Size * VerFactor
End Sub

Sub PictResizing(x As Control)
'Redimensiona y reubica un objeto de tipo picture
x.Top = Screen.Height / 2 - x.Height / 2
x.Left = Screen.Width / 2 - x.Width / 2
End Sub

Sub ControlsResizing(x As Control)
'Redimensiona y reubica un control genérico
x.Left = x.Left * HorFactor
x.Top = x.Top * VerFactor
x.Width = x.Width * HorFactor
x.Height = x.Height * VerFactor
End Sub

En el form_load del formulario llamo a Call SizeAdaptor(Me) y aunque no va perfecto, en general va bastante bien, excepto un problema:

En el formulario principal tengo un SSTab con varias pestañas. El problema es que la redimension de los controles funciona solamente con los controles de la pestaña activa. Es decir, los controles de la pestaña que se muestra por defecto al cargar el formulario aparecen redimensionados...pero el resto de las pestañas esta vacia!!!Esto pasa sea cual sea la pestaña por defecto.

Alguien sabria decirme como puedo hacer para que se redimensionen los controles de todas las pestañas??

David 18/06/2008 15:07

Respuesta: Problema de visualizacion
 
Puedes volver a llamar al procedimiento de redimensionado al hacer click en el TabStrip...


La zona horaria es GMT -6. Ahora son las 21:33.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.