In einen früheren Tipp wurde Ihnen bereits gezeigt, wie Sie alle Spalten eines ListView Controls auf die optimale Breite einstellen können. Doch was ist, wenn Sie nur eine oder mehere Spalten automatisch auf die optimale Breite setzen wollen? Das nachfolgende Modul zeigt Ihnen einen etwas anderen Weg und zusätzliche noch weitere Funktionen, um eine einzelne, bzw. mehrere Spalten gleichzeiig einzustellen. Folgende Funktionen stehen zur Verfügung:
Optional kann festgelegt werden, ob der Spalten-Header ebenfalls berücksichtigt werden soll:
' ********************************************************************* ' * ' * Modul mod_lvwResize ' * ' * Stellt die Spaltenbreite eines ListView-Controls automatisch ' * auf die optimale Breite ein. Es stehen folgende Funktionen ' * zur Verfügung: ' * ' * lvwSetSingleColWidth -> stellt eine einzelne Spalte ein ' * lvwSetMultiColWidth -> stellt eine Liste von Spalten ein ' * lvwSetAllColWidth -> stellt alle Spalten auf einmal ein ' * ' * Optional kann festgelegt werden, ob der Spalten-Header ' * berücksichtigt werden soll: ' * ' * lvw_AUTOSIZE -> Header nicht berücksichtigen ' * lvw_AUTOSIZE_WITH_HEADER -> Header berücksichtigen(Default) ' * ' * April 2003 - Roland Wutzke ' * ' ********************************************************************* Option Explicit ' benötigte API 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 ' benötigte Konstanten Private Const LVM_FIRST As Long = &H1000 Private Const LVM_SETCOLUMNWIDTH As Long = LVM_FIRST + 30 ' benötigte Aufzählung Public Enum lvw_Styles lvw_AUTOSIZE = -1 lvw_AUTOSIZE_WITH_HEADER = -2 End Enum Public Sub lvwSetAllColWidth(oListView As ListView, _ Optional ByVal Style As lvw_Styles = lvw_AUTOSIZE_WITH_HEADER) Dim ColumnIndex As Long With oListView ' Schleife über die Anzahl von Spalten im Listview For ColumnIndex = 1 To .ColumnHeaders.Count ' Spalte übergeben und Breite einstellen lvwSetSingleColWidth oListView, _ ColumnIndex, Style Next ColumnIndex End With End Sub Public Sub lvwSetMultiColWidth(oListView As ListView, _ ByVal ColumnArray As Variant, _ Optional ByVal Style As lvw_Styles = lvw_AUTOSIZE_WITH_HEADER) Dim ColumnIndex As Long ' Prüfen, ob das übergebene Array ein Array ist If IsArray(ColumnArray) Then With oListView ' Schleife über die gesamte Länge des Arrays For ColumnIndex = LBound(ColumnArray) To UBound(ColumnArray) ' Prüfen, ob das Array(Index) gültig ist If ColumnArray(ColumnIndex) <= .ColumnHeaders.Count Then ' Spalte aus dem Array übergeben und Breite einstellen lvwSetSingleColWidth oListView, _ ColumnArray(ColumnIndex), Style End If Next ColumnIndex End With End If End Sub Public Sub lvwSetSingleColWidth(oListView As ListView, ByVal ColumnIndex As Long, _ Optional ByVal Style As lvw_Styles = lvw_AUTOSIZE_WITH_HEADER) With oListView ' Prüfen, ob das Listview in der Ansicht "Report" ist If .View = lvwReport Then ' Prüfen, ob der übergebene Spaltenindex zulässig ist If ColumnIndex >= 1 And ColumnIndex <= .ColumnHeaders.Count Then ' API Aufruf an das Listview und Spalte einstellen Call SendMessage(.hWnd, LVM_SETCOLUMNWIDTH, _ ColumnIndex - 1, ByVal Style) End If End If End With End Sub Beispiel: (Sie benötigen eine Form mit einem ListView Control) ' Alle Spalten sollen eingestellt werden. Dabei soll ' auch der Column-Header berücksichtigt werden. lvwSetAllColWidth ListView1 ' Alle Spalten einstellen und den Header ' nicht berücksichtigen lvwSetAllColWidth ListView1, lvw_AUTOSIZE ' Nur bestimmte Spalten sollen eingestellt werden. ' Die Liste wird mit einem Array abgebildet. In diesem Fall ' werden die Spalten 1,3,4 und 6 übergeben. Dim colArray As Variant colArray = Array(1, 3, 4, 6) lvwSetMultiColWidth ListView1, colArray ' Nur eine einzelne Spalte wird eingestellt. lvwSetSingleColWidth ListView1, 1 Dieser Tipp wurde bereits 35.027 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |