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
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: