Rubrik: Controls · ListView | VB-Versionen: VB6 | 24.08.01 |
Spaltenbreite im ListView-Control Zwei Möglichkeiten die Spaltenbreiten im ListView-Control automatisch einzustellen. | ||
Autor: Thomas Bannert | Bewertung: | Views: 25.152 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Im nachfolgenden möchten wir Ihnen zwei Möglichkeiten vorstellen, wie sich die Spaltenbreiten der einzelnen Spalten eines ListView-Controls automatisch per Programmcode festlegen lassen.
1. Alle Spalten auf eine bestimmte einheitliche Breite setzen
Der Parameter lWidth legt hierbei die Breite fest:
Sub LVSize(oListView As MSComctlLib.ListView, _ lWidth As Long) Dim oColHeader As ColumnHeader For Each oColHeader In ListView1.ColumnHeaders oColHeader.Width = lWidth Next End Sub
2. Optimale Spaltenbreiten
Die nachfolgende Funktion setzt alle Spalten des übergebenen ListViews-Controls auf die optimale Breite. Wenn AccountForHeaders = True ist, werden die Spaltenüberschriften mitberücksichtigt. Ansonsten orientiert sich die Funktion nur an den Inhalten.
' zunächst die benötigten API-Deklarationen Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Private Const LVM_SETCOLUMNWIDTH = &H1000 + 30 Private Const LVSCW_AUTOSIZE = -1 Private Const LVSCW_AUTOSIZE_USEHEADER = -2 ' ListView-Spalten auf optimale Breite setzen Public Sub LVColumnWidth(oListView As MSComctlLib.ListView, _ Optional AccountForHeaders As Boolean = False) Dim col As Long Dim LParm As Long On Error GoTo error If AccountForHeaders Then LParm = LVSCW_AUTOSIZE_USEHEADER Else LParm = LVSCW_AUTOSIZE End If For col = 0 To oListView.ColumnHeaders.Count - 1 SendMessage oListView.hwnd, LVM_SETCOLUMNWIDTH, _ col, ByVal LParm Next col Exit Sub error: End Sub
Beispiele
' alle Spalten auf die Breite 2000 einstellen LVSize ListView1, 2000 ' Spalten je nach Inhalt auf die optimale Breite einstellen LVColumnWidth ListView1 ' Spalten je nach Inhalt auf die optimale Breite einstellen ' unter Berücksichtigung der Spalten-Überschriften LVColumnWidth ListView1, True