vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · ListView   |   VB-Versionen: VB4, VB5, VB617.10.02
ListView-Spalten ein-/ausblenden

Mit einem kleinen Trick lassen sich Spalten im ListView-Control aus- und auch wieder einblenden.

Autor:   Rene ZimmerlingBewertung:  Views:  28.164 
www.mgp-why.deSystem:  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



Anzeige

Kauftipp Unser Dauerbrenner!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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


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.