Unser heutiger Tipp zeigt einen Weg, wie sich der Inhalt eines ListView-Controls in einer Datenbank speichern und auch wieder auslesen lässt. Neben dem reinen Text sollen aber auch alle Zusatzinformationen, wie Farbattribute und Bildsymbol-Index gespeichert werden. Da das ListView sehr viele Zeile und Spalten enthalten kann, lässt sich der gesamte Inhalt meist nicht in einem Standard Datenbank-Textfeld speichern. Wir benötigen also ein Datenbank-Feld, das sehr viele Informationen aufnehmen kann - ein Memofeld. Der Inhalt des ListView-Controls muss hierzu zunächst in einen einzigen String zusammengefasst werden, der dann im Memofeld der Datenbank-Tabelle gespeichert werden kann: Private Function db_lvwGetData(ListView As ListView) As String Dim oItem As ListItem Dim i As Integer Dim sData As String sData = "" With ListView For Each oItem In .ListItems ' 1. Spalte With oItem sData = sData & CStr(Abs(.Bold)) & _ CStr(Abs(.Checked)) & "|" & _ CStr(.Icon) & "|" & CStr(.SmallIcon) & "|" & _ CStr(.ForeColor) & "|" & .Key & "|" & .Text End With ' weitere Spalten For i = 1 To oItem.ListSubItems.Count With oItem.ListSubItems.Item(i) sData = sData & vbTab & _ CStr(Abs(.Bold)) & "|" & _ CStr(.ReportIcon) & "|" & _ CStr(.ForeColor) & "|" & .Text End With Next i ' nächste Zeile sData = sData & vbCrLf Next End With db_lvwGetData = sData End Function Das Speichern des ListView-Inhaltes erfolgt demnach wie folgt: With oRecordset ... .Fields("memofeld").Value = db_lvwGetData(ListView1) ... End With Fehlt jetzt nur noch die Funktion, um den gespeicherten Inhalt wieder im ListView-Control anzuzeigen: Private Sub db_lvwSetData(ListView As ListView, _ ByVal dbData As String) Dim sLine() As String Dim sData() As String Dim sCol() As String Dim i As Integer Dim u As Integer Dim oItem As ListItem Dim oSubItem As ListSubItem With ListView ' ListView löschen .ListItems.Clear ' In die einzelnen Zeilen "zerlegen" sLine = Split(dbData, vbCrLf) ' alle Zeilen nacheinander hinzufügen For i = 0 To UBound(sLine) - 1 ' Spalten-Infos If sLine(i) <> "" Then sData = Split(sLine(i), vbTab) ' 1. Spalte sCol = Split(sData(0), "|") Set oItem = .ListItems.Add(, , sCol(5)) With oItem If sCol(4) <> "" Then .Key = sCol(4) .ForeColor = Val(sCol(3)) .SmallIcon = Val(sCol(2)) .Icon = Val(sCol(1)) .Bold = (Val(Mid$(sCol(0), 1, 1)) <> 0) .Checked = (Val(Mid$(sCol(0), 2, 1)) <> 0) End With ' weitere Spalten For u = 1 To UBound(sData) sCol = Split(sData(u), "|") Set oSubItem = oItem.ListSubItems.Add(, , sCol(3)) With oSubItem .Bold = (Val(sCol(0)) <> 0) .ReportIcon = Val(sCol(1)) .ForeColor = Val(sCol(2)) End With Next u End If Next i End With End Sub Für das Auslesen und Anzeigen, folgende Codezeile verwenden: With oRecordset ... db_lvwSetData ListView1, .Fields("memofeld").Value ... End With Dieser Tipp wurde bereits 17.160 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 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. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |