|
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
|
|
|
|
|
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: [ 1876 ]
|
|
|