Correctly set scrollbars’ width and height

Correctly set scrollbars’ width and height

You should always modify a vertical scrollbar’s width and a horizontal scrollbar’s height to conform to the display resolution. You can learn the suggested size (in pixels) using the GetSystemMetrics API function, then convert it to twips, and rezise all the scrollbars on your forms accordingly. The following routine, however, does everything automatically:

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) _    As LongSub ResizeAllScrollbars(frm As Object)    Dim hsbHeight As Single    Dim vsbWidth As Single    Dim ctrl As Control    Const SM_CXVSCROLL = 2    Const SM_CYHSCROLL = 3        ' Determine suggested scrollbars' size (in twips)    hsbHeight = GetSystemMetrics(SM_CYHSCROLL) * Screen.TwipsPerPixelY    vsbWidth = GetSystemMetrics(SM_CXVSCROLL) * Screen.TwipsPerPixelX    ' iterate on all the controls on the form    For Each ctrl In Controls        Select Case TypeName(ctrl)            Case "HScrollBar"                ctrl.Height = hsbHeight            Case "VScrollBar"                ctrl.Width = vsbWidth            Case "FlatScrollBar"                If ctrl.Orientation = 1 Then                    ctrl.Height = hsbHeight                Else                    ctrl.Width = vsbWidth                End If        End Select    NextEnd Sub


Share the Post: