Rubrik: Controls · ListBox | VB-Versionen: VB4, VB5, VB6 | 24.01.01 |
ListBox-Höhe autom. anpassen Dieser Tipp zeigt, wie Sie die Höhe einer ListBox automatisch an die minimal benötigte Höhe aller enthaltenen Einträge anpassen können. | ||
Autor: Heinz Prelle | Bewertung: | Views: 15.026 |
www.visual-basic5.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Der nachfolgende Tipp zeigt, wie Sie die Höhe eines ListBox-Steuerelements automatisch an die minimal benötigte Höhe aller in der Liste enthaltenen Einträge anpassen können. Zusätzlich können Sie noch die Mindest- und Maximalhöhe festlegen.
' zunächst die benötigten Deklarationen Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Any) As Long Private Const LB_GETITEMHEIGHT = &H1A1 ' ListBox-Höhe automatisch anpassen Public Sub LBAutoSizeHeight(objListBox As Object, _ ByVal minHeight As Long, ByVal maxHeight As Long) ' Falls es sich um keine ListBox handelt If Not TypeOf objListBox Is ListBox Then Exit Sub Dim lngItemHeight As Long Dim lngItems As Long Dim sngTwips As Single Dim sngListBoxHeight As Single Dim lbHeight As Long If minHeight < 125 Then minHeight = 125 With objListBox If .ListCount > 0 Then lngItems = .ListCount lngItemHeight = SendMessage(.hwnd, _ LB_GETITEMHEIGHT, 0&, 0&) If lngItemHeight > 0 Then sngTwips = lngItemHeight * Screen.TwipsPerPixelY sngListBoxHeight = (sngTwips * lngItems) + 125 lbHeight = sngListBoxHeight End If End If If lbHeight < minHeight Then lbHeight = minHeight If lbHeight > maxHeight And maxHeight > 0 Then _ lbHeight = maxHeight .Height = lbHeight End With End Sub
Beispiel für den Aufruf:
' minimal 590, maximal 8700 LBAutoSizeHeight List1, 590, 8700