Immer wieder taucht die Frage auf, wie sich ein ListView-Eintrag um eine Position nach oben bzw. nach unten verschieben lässt. Eine Möglichkeit wäre sich alle Einstellungen des aktuell selektierten ListView-Eintrags zu merken, dann das ListItem-Objekt aus der Liste zu löschen und an der gewünschten Position neu einzufügen. Fügen Sie Ihrem Projekt zunächst nachfolgende Klasse hinzu und benennen Sie diese "lvItem". Durch Aufruf der "Save"-Prozedur merkt sich die Klasse alle Eigenschaften des übergebenen ListView-Items einschl. der SubItems-Objekte. Anschließend kann man den Eintrag im ListView löschen. Danach fügt man dem ListView an der gewünschten Position einen neuen Eintrag hinzu und ruft anschließend die "Restore"-Prozedur der Klasse mit dem neu hinzugefügten ListItem-Objkekt auf. Klasse "lvItem" Option Explicit ' Eigenschaften des ListItem-Objekts Private m_Bold As Boolean Private m_Checked As Boolean Private m_ForeColor As Long Private m_Ghosted As Boolean Private m_Icon As Long Private m_Key As String Private m_SmallIcon As Long Private m_Tag As Variant Private m_Text As String Private m_ToolTipText As String Private m_ListSubItemsCount As Long Private m_SubItems() As SubItem ' Eigenschaft der einzelnen SubItem-Objekte Private Type SubItem Bold As Boolean ForeColor As Long Key As String ReportIcon As Long Tag As Variant Text As String ToolTipText As String End Type ' Speichern aller Eigenschaften des übergebenen ListItem-Objekts Public Sub Save(oItem As MSComctlLib.ListItem) Dim i As Long With oItem m_Text = .Text m_Key = .Key m_Icon = .Icon m_SmallIcon = .SmallIcon m_Checked = .Checked m_Bold = .Bold m_ForeColor = .ForeColor m_Ghosted = .Ghosted m_ToolTipText = .ToolTipText m_Tag = .Tag m_ListSubItemsCount = .ListSubItems.Count ReDim m_SubItems(m_ListSubItemsCount) For i = 1 To .ListSubItems.Count With .ListSubItems(i) m_SubItems(i).Bold = .Bold m_SubItems(i).ForeColor = .ForeColor m_SubItems(i).Key = .Key m_SubItems(i).ReportIcon = .ReportIcon m_SubItems(i).Tag = .Tag m_SubItems(i).Text = .Text m_SubItems(i).ToolTipText = .ToolTipText End With Next i End With End Sub ' Wiederherstellen der "gespeicherten" Eigenschaften Public Function Restore(oItem As MSComctlLib.ListItem) Dim i As Long With oItem .Text = m_Text .Key = m_Key .Icon = m_Icon .SmallIcon = m_SmallIcon .Checked = m_Checked .Bold = m_Bold .ForeColor = m_ForeColor .Ghosted = m_Ghosted .ToolTipText = m_ToolTipText .Tag = m_Tag For i = 1 To m_ListSubItemsCount If .ListSubItems.Count < i Then .ListSubItems.Add With .ListSubItems(i) .Bold = m_SubItems(i).Bold .ForeColor = m_SubItems(i).ForeColor .Key = m_SubItems(i).Key .ReportIcon = m_SubItems(i).ReportIcon .Tag = m_SubItems(i).Tag .Text = m_SubItems(i).Text .ToolTipText = m_SubItems(i).ToolTipText End With Next i End With End Function Nachfolgend der Code zum Verschieben des aktuell selektierten ListView-Eintrags um eine Position nach oben: ' aktuellen ListView-Eintrag eine Position nach oben Dim Index As Long Dim oItem As ListItem Dim lvItem As New lvItem With ListView1 Index = .SelectedItem.Index If Index > 1 Then ' alle Eigenschaften "merken" lvItem.Save .SelectedItem ' Eintrag löschen .ListItems.Remove Index ' Eintrag 1 Position weiter oben wieder einfügen Set oItem = .ListItems.Add(Index - 1) ' ursprüngliche Eigenschaften wiederherstellen lvItem.Restore oItem End If End With Und jetzt noch der Code zum Verschieben des aktuell selektierten Eintrags um eine Position nach unten: ' aktuellen ListView-Eintrag eine Position nach unten Dim Index As Long Dim oItem As ListItem Dim lvItem As New lvItem With ListView1 Index = .SelectedItem.Index If Index < .ListItems.Count Then ' alle Eigenschaften "merken" lvItem.Save .SelectedItem ' Eintrag löschen .ListItems.Remove Index ' Eintrag 1 Position weiter unten wieder einfügen Set oItem = .ListItems.Add(Index + 1) ' ursprüngliche Eigenschaften wiederherstellen lvItem.Restore oItem End If End With Dieser Tipp wurde bereits 11.046 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |