Rubrik: Controls · ListView | VB-Versionen: VB4, VB5, VB6 | 17.10.02 |
ListView-Spalten ein-/ausblenden Mit einem kleinen Trick lassen sich Spalten im ListView-Control aus- und auch wieder einblenden. | ||
Autor: Rene Zimmerling | Bewertung: | Views: 28.164 |
www.mgp-why.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Haben Sie sich auch schon einmal darüber geärgert, dass sich einzelne Spalten im ListView-Control nicht so ohne weiteres aus- und bei Bedarf wieder einblenden lassen?
Stimmt - eine Visible-Eigenschaft bietet das ColumnHeaders-Objekt nicht. Aber: Um eine Spalte zur Laufzeit auszublenden könnte man doch einfach die Width-Eigenschaft der Spalte auf 0 setzen - oder?
Genau das macht die nachfolgende Prozedur. Und damit sich eine ausgeblendete Spalte schnell wieder in der ursprünglichen Größe wiederherstellen lässt, wird die Spaltenbreite einfach in der Tag-Eigenschaft der jeweiligen Spalte "zwischengespeichert".
Parameter:
- ListView: ListView-Objekt
- nIndex: Index der Spalte, die ein-/ausgeblendet werden soll
- nMode: Aktion: Ein- oder ausblenden
Kopieren Sie den Code am besten in ein Modul, so dass Sie auf die lvw_SetColumnView-Prozedur aus Ihrem gesamten Projekt heraus zugreifen können.
Option Explicit ' Aufzählung Public Enum MODE_COLUMNVIEW lvw_ColumnHide = 0 lvw_ColumnShow = 1 End Enum
' Blendet eine Spalte eines ListView-Controls bzw. ' zeigt diese wieder in der ursprünglichen Größ an Public Sub lvw_SetColumnView(ListView As ListView, _ ByVal nIndex As Integer, _ ByVal nMode As MODE_COLUMNVIEW) With ListView.ColumnHeaders ' Wurde eine gültige Spalte angegeben? If nIndex > 0 And nIndex < .Count + 1 Then With .Item(nIndex) Select Case nMode ' Spalte ausblenden Case lvw_ColumnHide If .Width > 0 Then ' Aktuelle Spaltenbreite in der Tag- ' Eigenschaft "merken" .Tag = .Width ' Neue Spaltenbreite: Width = 0 .Width = 0 End If ' Spalte wieder einblenden Case lvw_ColumnShow If .Width = 0 Then ' Ursprüngliche Breite aus der Tag- ' Eigenschaft auslesen und als "neue alte" ' Width-Eigenschaft setzen .Width = Val(.Tag) End If End Select End With End If End With End Sub
Beispiel für den Aufruf:
' 2. Spalte ausblenden lvw_SetColumnView ListView1, 2, lvw_ColumnHide
' 2. Spalte wieder einblenden lvw_SetColumnView ListView1, 2, lvw_ColumnShow