Scrollbalken - Anzeige - Problem

Primax

Mitglied
Scrollbalken-Anzeige-Problem

Ich habe eine Ausgabe, bei der Bilder auf ein Form gezeichnet werden. Wenn die Anzahl der Bilder zu groß wird, werden Scrollbalken angezeigt. Die Reihenfolge ist aber anders, ich rufe in der Form-Load-Sub die Berechnung und die Erzeugung für die Ausgabe auf. Dann werden in der Form-Load-Sub die Scrollbalken angepasst.

Jetzt habe ich folgendes Problem, wenn das Formular geladen ist, kann über eine andere Sub die Anordnung der Bildchen ändern. Das Problem ist, das nach dem Ändern die Scrollbalken nicht mehr angezeigt werden.

Hat jemand eine Idee wie ich das Problem in den Griff bekomme?


Das mit den Scrollbalken habe ich aus einem Tipp:

Grüße Primax
Code:
Option Explicit

Private Const c_HGHTWDTH As Integer = 255

Private m_blnFrmLoading As Boolean

Private m_sngPicBoxWidth As Single
Private m_sngPicBoxHeight As Single

Private Sub Form_Load()
  m_blnFrmLoading = True

  With Me
    .Width = 5000
    .Height = 4000
  End With

  With picBoxControls
    .BorderStyle = 0
    .Move 0, 0

    m_sngPicBoxWidth = .Width
    m_sngPicBoxHeight = .Height
  End With

  With picGrip
    .Height = c_HGHTWDTH
    .Width = c_HGHTWDTH
    .BorderStyle = 0
    .ZOrder 0
  End With

  With HScroll1
    .Left = 0
    .Height = c_HGHTWDTH
    .TabStop = False
    .ZOrder 0
  End With

  With VScroll1
    .Top = 0
    .Width = c_HGHTWDTH
    .TabStop = False
    .ZOrder 0
  End With

  m_blnFrmLoading = False
End Sub

Private Sub Form_Resize()
  If m_blnFrmLoading Or Me.WindowState = vbMinimized Then Exit Sub
  GetScrollBars
End Sub

Private Sub GetScrollBars()
  Dim sngHeight As Single
  Dim sngWidth As Single
  Dim boolHScroll As Boolean
  Dim boolVScroll As Boolean

  On Error Resume Next

  sngWidth = Me.ScaleWidth
  sngHeight = Me.ScaleHeight

  boolHScroll = CBool(sngWidth < m_sngPicBoxWidth)
  If boolHScroll Then
    sngHeight = sngHeight - c_HGHTWDTH
  End If

  boolVScroll = CBool(sngHeight < m_sngPicBoxHeight)
  If boolVScroll Then
    sngWidth = sngWidth - c_HGHTWDTH

    If Not boolHScroll Then
      boolHScroll = CBool(sngWidth < m_sngPicBoxWidth)
      If boolHScroll Then
        sngHeight = sngHeight - c_HGHTWDTH
      End If
    End If
  End If

  If boolHScroll Then
    With HScroll1
      .Top = sngHeight
      .Width = sngWidth

      .Min = 0
      .Max = m_sngPicBoxWidth - sngWidth
      .LargeChange = picBoxControls.Width * 0.1
      .SmallChange = .LargeChange / 4
 
      .Visible = True
    End With

  Else
    With HScroll1
      .Value = 0
      .Visible = False
    End With
  End If

  If boolVScroll Then
    With VScroll1
      .Left = sngWidth
      .Height = sngHeight

      .Min = 0
      .Max = m_sngPicBoxHeight - sngHeight
      .LargeChange = picBoxControls.Height * 0.1
      .SmallChange = .LargeChange / 4

      .Visible = True
    End With

  Else
    With VScroll1
      .Value = 0
      .Visible = False
    End With
  End If

  If HScroll1.Visible And VScroll1.Visible Then
    With picGrip
      .Move VScroll1.Left, HScroll1.Top
      .Visible = True
    End With
  Else
    picGrip.Visible = False
  End If
End Sub

Private Sub HScroll1_Change()
  picBoxControls.Left = -HScroll1.Value
End Sub

Private Sub HScroll1_Scroll()
  HScroll1_Change
End Sub

Private Sub VScroll1_Change()
  picBoxControls.Top = -VScroll1.Value
End Sub

Private Sub VScroll1_Scroll()
  VScroll1_Change
End Sub
 
Zuletzt bearbeitet von einem Moderator:
Zurück