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

Vscroll y Hscroll en Visual Basic 6

Estas en el tema de Vscroll y Hscroll en Visual Basic 6 en el foro de Visual Basic clásico en Foros del Web. Hola a todos... Sé que existe un tema abierto acerca del vscroll y el hscroll. En mi caso el problema viene con el vscroll (porque ...
  #1 (permalink)  
Antiguo 15/06/2004, 15:22
Avatar de Pip
Pip
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 280
Antigüedad: 20 años, 5 meses
Puntos: 0
Exclamación Vscroll y Hscroll en Visual Basic 6

Hola a todos...

que existe un tema abierto acerca del vscroll y el hscroll. En mi caso el problema viene con el vscroll (porque no tengo que usar hscroll), de todas maneras es evidente que manejando uno se manejarán los dos.

Creo que el código que haga funcionar un vscroll debe de ser el mismo siempre... no puede haber más de una manera de hacer algo que parece tan sencillo (y que a la vez me está creando tantos problemas). Partimos de que todo lo que hay en un formulario está dentro de un frame invisible para el usuario, de esta manera sería más sencillo desplazar todo el contenido del frame a medida que el usuario desplaza el vscroll.

Teniendo en cuenta que nuestros datos son el value del vscroll, el min y max tamaño del value y el alto del formulario (que es el mismo alto que el del frame invisible, pues este ocupa todo el formulario), ¿Cómo crear un código que funcione? ¿Y cómo hacerlo sin que el vscroll quede diminuto por aumentar mucho su max?

Pienso que la respuesta a esta pregunta ayudará a gente que, como yo, se coma la cabeza demasiado con este asunto.

Muchas gracias a todos.
__________________
por Pip
  #2 (permalink)  
Antiguo 15/06/2004, 16:22
Avatar de Pip
Pip
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 280
Antigüedad: 20 años, 5 meses
Puntos: 0
Añado lo que se me ha ocurrido de código hasta el momento, no gran cosa como veis.

Código:
Private Sub vScroll_Change()
Dim x As Long
    If (vScroll.Value) Then
        x = (fraFrame.Height / (vScroll.Max)) * (vScroll.Value)
        fraFrame.Top = x - (x * 2)
    Else
        fraFrame.Top = 120
    End If
End Sub
No hay mucho que explicar pero aprovecho para decir que no funciona bien. En teoría, dividiendo el alto de mi frame entre el máximo valor que puede tener el vscroll conseguiría las "porciones" del frame (que viene a ser la ventana completa, por lo que dije antes), y multplicando esta porción por el value actual, nos desplazaríamos hasta la zona concreta, si el máximo valor es 5 y estamos en el value 2, nos encontraríamos a la mitad exacta de la ventana (todo esto no es cierto ya que no me funciona, era mi hipótesis).

Sin embargo cuando llego al valor máximo del vScroll, me encuentro "pasado", no me quedo corto si no que el top del frame es más negativo de lo que debería ser. Uso fraFrame.Top = x - (x * 2) porque es mi manera "casera" de volver negativo el número.

Ojalá alguien pueda darme la clave de todo esto...
__________________
por Pip
  #3 (permalink)  
Antiguo 19/11/2008, 12:54
 
Fecha de Ingreso: diciembre-2007
Ubicación: Caracas - Venezuela
Mensajes: 32
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Vscroll y Hscroll en Visual Basic 6

Hola a todos...
Algo para tomar en cuenta....

En el codigo anterior cambien en el fraFrame.Top = x - (x * 2) POR
fraFrame.Top = fraFrame.Top - x

y ESTARAN ENCAMINADOS A LOGRAR LO QUE QUIERAN CON EL vScroll

If (vScroll.Value) Then
x = (fraFrame.Height / (vScroll.Max)) * (vScroll.Value)
fraFrame.Top = x - (x * 2)
Else
fraFrame.Top = 120
End If
  #4 (permalink)  
Antiguo 27/10/2010, 14:53
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Vscroll y Hscroll en Visual Basic 6

Tengo una pregunta, estoy iniciandome en visual basic y quiero saber si hay necesidad de incluir todos los controles dentro de un frame para poder usar el Vscroll o si cuando ustedes hablan de un frame invisible esto ya viene determinado.
  #5 (permalink)  
Antiguo 28/10/2010, 04:47
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Vscroll y Hscroll en Visual Basic 6

Yo uso ese sistema y, aunque nunca he llegado a dominar el código porque lo saqué de la red, creo que te puedo aclarar la idea.

El frame es un recuadro liso, de modo que al estirarlo hasta superar el tamaño del formulario, deja de verse como objeto, quedando como fondo del form. Eso es lo que lo hace "invisible" siendo su propiedad Visible=True.

Todos los objetos que quieras desplazar con el scroll deben estar insertados dentro de ese frame, de modo que cuando desplaces el frame hacia arriba, los objetos lo acompañen como parte de él.

El scroll sin embargo debe quedar fuera del frame, ya que si no se iria con el.

Debe ser por eso que mi programa usa un picture debajo del frame, de modo que el picture ocupa todo el form, pero el frame solo ocupa parte del picture dejando espacio para los scrollbars.
El problema es que trabaja con la propiedad scaleheight y no llegué a entender como funciona.

Espero que te sirva de ayuda.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #6 (permalink)  
Antiguo 28/10/2010, 05:47
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Vscroll y Hscroll en Visual Basic 6

Hola, si lo que quieres es incluir Scroll en tu formulario, comprueba este enlace para ver si te sirve de ayuda, recuerdo haberlo probado y creo que funciona tan facilmente como dice.

OCX para incluir barras de desplazamiento en formulario

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
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 08:12.