Tipp 0310 Form scrollen
Autor/Einsender:
Datum:
  Angie
12.02.2003
Entwicklungsumgebung:   VB 5
Dieser Tipp zeigt, wie man den Inhalt einer Form scrollen kann, wenn diese in der Größe so verkleinert wird, dass nicht mehr alle Steuerelemente vollständig angezeigt werden können.
Form-Aufbau: Direkt auf der Form werden zunächst eine PictureBox (Container für Steuerelemente), je eine vertikale und horizontale ScrollBar und noch eine kleine PictureBox (dient als Abdeckung für die "offene Ecke", wenn beide ScrollBars angezeigt werden) platziert. Sonstige Steuerelemente werden direkt auf der PictureBox, der als Container dient, positioniert.
Bei jeder Veränderung der Fenstergröße wird zunächst überprüft, ob die als Container fungierende PictureBox in einer und/oder in beiden Richtungen vollständig angezeigt werden kann. Die ScrollBars werden dann entsprechend angeordnet bzw., wenn die eine oder andere ScrollBar nicht benötigt wird, wird diese ausgeblendet.
 
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
 
Weitere Links zum Thema
Grafik scrollen
Teilbereich einer Form scrollen

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (10,3 kB) Downloads bisher: [ 1791 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Dienstag, 26. Juli 2011