Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problema de visualizacion

Estas en el tema de Problema de visualizacion en el foro de Visual Basic clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/06/2008, 07:39
 
Fecha de Ingreso: enero-2008
Mensajes: 61
Antigüedad: 16 años, 3 meses
Puntos: 0
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.
  #2 (permalink)  
Antiguo 16/06/2008, 11:00
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Problema de visualizacion

Hola!

Esa aplicación está hecha en VB6? Has comprobado las propiedades WindowState y BorderStyle del form?
  #3 (permalink)  
Antiguo 17/06/2008, 00:41
 
Fecha de Ingreso: enero-2008
Mensajes: 61
Antigüedad: 16 años, 3 meses
Puntos: 0
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?
  #4 (permalink)  
Antiguo 17/06/2008, 01:51
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
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.
  #5 (permalink)  
Antiguo 17/06/2008, 04:30
 
Fecha de Ingreso: enero-2008
Mensajes: 61
Antigüedad: 16 años, 3 meses
Puntos: 0
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...
  #6 (permalink)  
Antiguo 17/06/2008, 06:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Problema de visualizacion

Cita:
Iniciado por etxebe Ver Mensaje
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...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 17/06/2008, 12:16
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
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.
  #8 (permalink)  
Antiguo 18/06/2008, 01:29
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
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--
  #9 (permalink)  
Antiguo 18/06/2008, 03:49
 
Fecha de Ingreso: enero-2008
Mensajes: 61
Antigüedad: 16 años, 3 meses
Puntos: 0
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??
  #10 (permalink)  
Antiguo 18/06/2008, 15:07
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema de visualizacion

Puedes volver a llamar al procedimiento de redimensionado al hacer click en el TabStrip...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:10.