Rubrik: Controls · ListView | VB-Versionen: VB5, VB6 | 25.04.06 |
ListView-Spaltenreihenfolge speichern und wiederherstellen Zwei Funktionen, mit denen sich die Spaltenreihenfolge im ListView-Control speichern und wiederherstellen lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 8.692 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | 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