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

https://www.vbarchiv.net
Rubrik: Controls · ListView   |   VB-Versionen: VB4, VB5, VB628.09.01
ListView Column-Headers flach darstellen

Eine Routine, welche die Darstellung der ListView Spaltenüberschriften entweder flach oder normal darstellt.

Autor:   Thomas BannertBewertung:  Views:  16.447 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Leider verfügt das ansonsten doch so moderne ListView-Control nicht über die Möglichkeit, die Spaltenbezeichner (Columns-Headers) im modernen "Flatlook" darzustellen.

Unter Einsatz des Windows-APIs lässt sich aber auch das realisieren. Hierzu muss zunächst das Handle der Column-Headers ermittelt werden. Dann wird über die API-Funktion GetWindowLong der aktuelle Stil ermittelt und per SetWindowLong der neue Stil zugewiesen.

Fügen Sie nun nachfolgenden Code in ein Modul ein, und rufen dann die Prozedur FlatColumnHeaders in Verbindung mit Ihrem ListView-Control auf. Die Spaltenbezeichner werden dann sofort "flach" dargestellt. Ein nochmaliger Aufruf stellt die Standard-Darstellung wieder her.

' zunächst die benötigten API-Deklarationen
Private Const HDS_BUTTONS As Long = &H2
Private Const GWL_STYLE As Long = (-16)
Private Const LVM_GETHEADER As Long = (LVM_FIRST + 31)
Private Const LVM_FIRST = &H1000
 
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 Declare Function GetWindowLong Lib "user32" _
  Alias "GetWindowLongA" ( _
  ByVal hwnd As Long, _
  ByVal nIndex As Long) As Long
 
Private Declare Function SetWindowLong Lib "user32" _
  Alias "SetWindowLongA" ( _
  ByVal hwnd As Long, _
  ByVal nIndex As Long, _
  ByVal dwNewLong As Long) As Long

Und jetzt die Prozedur selbst:

' ColumnHeaders eines ListView-Controls flach
' darstellen
Private Sub FlatColumnHeader(oLSV As ListView)
  Dim lStyle       As Long
  Dim lHeader      As Long
 
  ' Bei Auftreten eines Fehlers, Sub verlassen
  On Local Error GoTo ExitSub
 
  ' Handle des ColumnHeaders
  lHeader = SendMessage(oLSV.hwnd, LVM_GETHEADER, 0, _
    ByVal 0&)
 
  ' Aktuelles Aussehen des Headers lesen
  lStyle = GetWindowLong(lHeader, GWL_STYLE)
 
  ' Style ändern
  lStyle = lStyle Xor HDS_BUTTONS
 
  If lStyle Then
    ' neuen Style zuweisen
    Call SetWindowLong(lHeader, GWL_STYLE, lStyle)
  End If
 
ExitSub:
End Sub

Beispiel:

Private Sub Form_Load()
  ' ListView-Headers "flach" darstellen
  FlatColumnHeaders ListView1
End Sub



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.