|
Die Rollbalken (Scrollbars) eines Fensters können Sie über die API-Funktion ShowScrollbar ein- und ausblenden. Und da Forms, UserControls, PropertyPages und Steuerelemente Fenster sind, können Sie somit auch die Rollbalken von diesen ein- und ausblenden. Bei Fenstern, die Sie in Visual Basic antreffen, werden Sie mit eingeblendeten Rollbalken nicht viel anfangen können, wenn diese nicht von vornherein vorhanden und vorgesehen sind (insofern müsste man eher umgekehrt von "aus- und wieder einblenden" sprechen), außer Sie setzen Subclassing-Techniken ein, um die Nachrichten von nachträglich eingeblendeten Rollbalken abzufangen und zu bearbeiten. Aber das ist ein anderes, weitaus komplexeres Thema, das wir hier nicht anpacken wollen. Wir begnügen uns statt dessen mit dem einfachen Aus- und wieder Einblenden von Rollbalken bei Steuerelementen wie TextBox, ListBox und anderen.
Da sich die Konstanten zur Angabe, welche Rollbalken (horizontal und/oder vertikal) sichtbar sein sollen bei der API-Funktion ShowScrollbar von den Konstanten in Visual Basic (ScrollBarConstants) unterscheiden, Setzen wir den Aufruf in die Hilfsfunktion ShowScrollbars. Dieser übergeben Sie das betreffende VB-Objekt und, wie beispielsweise bei einer Multiline-Textbox gewohnt, eine der 4 möglichen VB-Konstanten (vbSBNone, vbHorizontal, vbVertical oder vbBoth). Dementsprechend werden in der Funktion durch Einzelaufrufe der API-Funktion ShowScrollbar der horizontale oder der vertikale Rollbalken aus- oder eingeblendet. Sollte das übergebene VB-Objekt nicht über eine hWnd-Eigenschaft (Fenster-Handle) verfügen, geschieht gar nichts - die Funktion gibt True zurück, um den Fehlerfall anzuzeigen.
Private Declare Function ShowScrollBar Lib "user32" _
(ByVal hwnd As Long, ByVal wBar As Long, ByVal bShow As Long) _
As Long
Public Function ShowScrollBars(Object As Object, _
ScrollBars As ScrollBarConstants) As Boolean
Dim nWnd As Long
Const SB_HORZ = 0
Const SB_VERT = 1
Const SB_BOTH = 3
On Error Resume Next
nWnd = Object.hwnd
If Err.Number Then
ShowScrollBars = True
Else
Select Case ScrollBars
Case vbSBNone
ShowScrollBar nWnd, SB_BOTH, False
Case vbHorizontal
ShowScrollBar nWnd, SB_VERT, False
ShowScrollBar nWnd, SB_HORZ, True
Case vbVertical
ShowScrollBar nWnd, SB_HORZ, False
ShowScrollBar nWnd, SB_VERT, True
Case vbBoth
ShowScrollBar nWnd, SB_BOTH, True
End Select
End If
End Function
Beachten Sie, dass mit dem Aus- oder Einblenden von Rollbalken in der Regel keine anderen Einstellungen und Verhaltensweisen des jeweiligen Fensters gesetzt werden. Bei einer Multiline-TextBox, die voreingestellt beide Rollbalken anzeigt, wird mit dem Ausblenden des horizontalen Rollbalkens keineswegs der automatische Zeilenumbruch eingeschaltet, bzw. umgekehrt bei einer Multiline-TextBox ohne voreingestellten horizontalen Rollbalken wird der automatische Zeilenumbruch mit dem Einblenden des Rollbalken nicht automatisch ausgeschaltet!
|