Tipp 0382 ListView-Steuerelement laden und speichern
Autor/Einsender:
Datum:
  Angie
03.02.2004
Entwicklungsumgebung:   VB 6
Beim Einlesen der Daten wird davon ausgegangen, dass die erste Zeile in der einzulesenden Textdatei die Spaltenüberschriften enthält, aus der die benötigte Anzahl Spalten für das ListView-Steuerelement ermittelt wird, und die erste "Spalte" der Datenzeilen den Schlüsselwert (Key). In der Textdatei sind die einzelnen Spalten der Datenzeilen mit dem im Code vorgegebenen Trennzeichen voneinander getrennt.
 
Option Explicit

Private Const mc_DELIMITER As String = "~|~"

Public Sub LoadListViewData(ByVal lvw As ListView, _
      ByVal vsFileName As String)

  Dim strFileText As String
  Dim astrData()  As String
  Dim astrItems() As String

  Dim intColsCnt  As Integer
  Dim sngColWidth As Single

  Dim FN As Integer
  Dim i  As Integer
  Dim j  As Integer

  Dim itmX As ListItem

  If Len(Dir(vsFileName, vbNormal)) = 0 Then
    MsgBox "Die Datei " & vsFileName & _
          " konnte nicht gefunden werden !", _
          vbOKOnly + vbInformation, Title:="Fehler"

  Else
    FN = FreeFile()
    Open vsFileName For Binary Access Read As #FN
      strFileText = Space(LOF(FN))
      Get #FN, , strFileText
    Close #FN

    If Len(Trim$(strFileText)) > 0 Then
      astrData() = Split(strFileText, vbCrLf)
      astrItems() = Split(astrData(0), mc_DELIMITER)

      intColsCnt = UBound(astrItems)

      Select Case intColsCnt
        Case 0
          sngColWidth = (lvw.Width * 0.99)
        Case Is > 0
          sngColWidth = (lvw.Width * 0.99) / intColsCnt
        Case Else
      End Select

      For j = 1 To UBound(astrItems)
        lvw.ColumnHeaders.Add , , astrItems(j), sngColWidth
      Next

      For i = 1 To UBound(astrData) - 1
        astrItems() = Split(astrData(i), mc_DELIMITER)

        If UBound(astrItems) > intColsCnt Then
          ReDim Preserve astrItems(intColsCnt)
        End If

        Set itmX = lvw.ListItems.Add(, astrItems(0), astrItems(1))
        For j = 2 To UBound(astrItems)
          itmX.SubItems(j - 1) = astrItems(j)
        Next
      Next
    End If
  End If
End Sub

Public Sub SaveListViewData(ByVal lvw As ListView, _
      ByVal vsFileName As String)

  Dim FN As Integer

  Dim intColsCnt  As Integer
  Dim strFileText As String

  Dim i As Integer
  Dim j As Integer

  On Error GoTo err_SaveData

  FN = FreeFile()
  Open vsFileName For Output As #FN
  With lvw
    intColsCnt = .ColumnHeaders.Count

    strFileText = "ColumnHeaders"
    For i = 1 To intColsCnt
      strFileText = strFileText & mc_DELIMITER & .ColumnHeaders(i)
    Next
    Print #FN, strFileText

    For i = 1 To .ListItems.Count
      With .ListItems(i)
        strFileText = .Key & mc_DELIMITER
        strFileText = strFileText & .Text
        For j = 1 To intColsCnt - 1
          strFileText = strFileText & mc_DELIMITER & .SubItems(j)
        Next
        Print #FN, strFileText
      End With
    Next
  End With

exit_Sub:
  Close #FN
  Exit Sub

err_SaveData:
  MsgBox Err.Description, vbOKOnly + vbCritical, "Fehler"
  Resume exit_Sub
End Sub

Public Function GetInitFileName() As String
  Dim strPath As String

  strPath = App.Path
  If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"
  GetInitFileName = strPath & "ListViewInit.lst"
End Function
 
Weitere Links zum Thema
Daten aus Textdatei einlesen und speichern (MS(H)FlexGrid)
Programm-Einstellungen speichern (INI-Datei)
Programm-Einstellungen speichern (SaveSetting)

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (5,1 kB) Downloads bisher: [ 1924 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 30. Juli 2011