vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2021
 
zurück
Rubrik: Controls · ListView   |   VB-Versionen: VB5, VB625.04.06
ListView-Spaltenreihenfolge speichern und wiederherstellen

Zwei Funktionen, mit denen sich die Spaltenreihenfolge im ListView-Control speichern und wiederherstellen lässt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  7.897 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Wenn Sie bei Verwendung des Microsoft ListView-Controls die "AllowColumnReorder"-Eigenschaft auf True festlegen, kann der Anwender die Spaltenreihenfolge zur Laufzeit via Drag & Drop nach seinen individuellen Wünschen anpassen.

Schön wäre es natürlich, wenn die vom Anwender geänderte Spaltenreihenfolge bei einem Neustart der Anwendung auch wiederhergestellt würde.

Nachfolgend zwei Funktionen, die genau dieses Feature ermöglichen.

Public Sub lvw_SaveColumnOrder(oListView As Object)
  ' aktuelle Spalten-Reihenfolge ermitteln und speichern
  Dim sBuffer As String
  Dim oColumn As MSComctlLib.ColumnHeader
 
  With oListView
    For Each oColumn In .ColumnHeaders
      With oColumn
        sBuffer = sBuffer & .Key & ";" & .Position & vbTab
      End With
    Next 
 
    ' in Registry speichern
    SaveSetting "MyApp", .Parent.Name & "." & .Name, "ColumnOrder", sBuffer
  End With
End Sub
Public Sub lvw_LoadColumnOrder(oListView As Object)
  ' gespeicherte Spalten-Reihenfolge wiederherstellen
  Dim sBuffer As String
  Dim sData() As String
  Dim i As Integer
  Dim sKey As String
  Dim nPos As Integer
 
  With oLIstView
    sBuffer = GetSetting("MyApp", .Parent.Name & "." & .Name, "ColumnOrder", "")
    If Len(sBuffer) > 0 Then
      sData = Split(sBuffer, vbTab)
      For i = 0 To UBound(sData)
        If InStr(sData(i), ";") > 0 Then
          sKey = Left$(sData(i), InStr(sData(i), ";") - 1)
          nPos = Val(Mid$(sData(i), InStr(sData(i), ";") + 1))
 
          .ColumnHeaders(sKey).Position = nPos
        End If
      Next i
    End If
  End With
End Sub

Wichtig:
Damit die beiden Funktionen auch korrekt arbeiten, ist es notwendig, dass Sie jeder Spalte im ListView-Control einen Key-Wert zuweisen.

Aufruf-Beispiel:

Private Sub Form_Load()
  ...
  ' ListView-Spaltenreihenfolge wiederherstellen
  lvw_LoadColumnOrder ListView1
  ...
End Sub
Private Sub Form_Unload(Cancel As Integer)
  ' ListView-Spaltenreihenfolge speichern
  lvw_SaveColumnOrder ListView1
End Sub

Dieser Tipp wurde bereits 7.897 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2021 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel