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

https://www.vbarchiv.net
Rubrik: Controls · ListView   |   VB-Versionen: VB624.08.01
Spaltenbreite im ListView-Control

Zwei Möglichkeiten die Spaltenbreiten im ListView-Control automatisch einzustellen.

Autor:   Thomas BannertBewertung:  Views:  24.837 
ohne HomepageSystem:  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



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.