Visual Basic - ScrollBars!! Desaparecen al volver a cargar Form

Life is soft - evento anual de software empresarial
 
Vista:

ScrollBars!! Desaparecen al volver a cargar Form

Publicado por Roberto (22 intervenciones) el 18/07/2006 21:05:13
Hola!!

Puse un ScrollBar en una forma me funcion muy bien la primera vez que abro el proyecto pero cierro la forma y la vuelo a iniciar y ya no sale la ScrollBar, no se en realidad porque pasa eso cuando mando llamar el procedimiento para activar la ScrollBar lo tengo que hacer en la propiedad de Form_Resize() para que se pueda hacer no lo puedo hacer mediante otra forma.

Aquí explico un poco mejor lo que me pasa:

En un módulo de clase puse las siguientes instrucciones:

Option Explicit

Dim aPos As Integer 'Mantiene el valor global de la posición del scroll
Dim WithEvents ScrollBar As VB.VScrollBar 'Variable para crear el Control y utilizar sus procedimientos/eventos
'Attribute ScrollBar.VB_VarHelpID = -1
Dim Cargado As Boolean

Sub DibujarScrollBar()
If Not Cargado Then
Set ScrollBar = Screen.ActiveForm.Controls.Add("VB.VScrollBar", _
"ScrollBar1", Screen.ActiveForm) 'Ejemplo extraido de la página de la microsoft
ScrollBar.Max = Screen.ActiveForm.Height
Ajustar
ScrollBar.Visible = True
ScrollBar.SmallChange = 50
ScrollBar.LargeChange = 100
Cargado = True
End If
Ajustar
End Sub

Private Sub Ajustar()
Dim ControlVerticalMaximo As Integer
Dim cControl As Control
Dim AltoStatus As Integer

On Error Resume Next
For Each cControl In Screen.ActiveForm.Controls
If cControl.Top > ControlVerticalMaximo Then
ControlVerticalMaximo = cControl.Top + cControl.Height 'Obtengo la posición vertical del control que se encuentre mas abajo
End If

If TypeName(cControl) = "StatusBar" Then 'Si tengo un control estatus también se evalúa su altura
AltoStatus = cControl.Height
End If
Next

If ScrollBar.Height > ControlVerticalMaximo Then
ScrollBar.Max = ScrollBar.Height - ControlVerticalMaximo + 50
Else
ScrollBar.Max = ControlVerticalMaximo - ScrollBar.Height + 50
End If

If ControlVerticalMaximo <= Screen.ActiveForm.ScaleHeight Then
ScrollBar.Enabled = False
Else
ScrollBar.Enabled = True
End If

ScrollBar.Height = Screen.ActiveForm.ScaleHeight - AltoStatus
ScrollBar.Top = 0
ScrollBar.Left = Screen.ActiveForm.ScaleWidth - ScrollBar.Width
aPos = 0
ScrollBar.Value = 0
End Sub

Private Sub ScrollBar_Change()
Cambiar
End Sub

Private Sub ScrollBar_Scroll()
Cambiar
End Sub

Private Sub Cambiar()
Dim a As Control
Dim Pos As Integer

On Error Resume Next

Pos = aPos - ScrollBar.Value

For Each a In Screen.ActiveForm.Controls
If Not TypeName(a) = "VScrollBar" Then
If a.Container = "" Then
a.Top = a.Top + Pos 'Muevo los controles dependiendo de la posición del scroll
End If
End If
Next
Debug.Print "Min: " & ScrollBar.Min
Debug.Print "Max: " & ScrollBar.Max

aPos = ScrollBar.Value
End Sub

y lo mando llamar así:

Private Sub Form_Resize()
hS.DibujarScrollBar
End Sub

Espero me ayuden con mi error gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder