ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 16.03.2001

Diese Seite wurde zuletzt aktualisiert am 16.03.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

ListView-Inhalt komplett

Zurück...


Anzeige

(-hg) mailto:hg_listviewcontents@aboutvb.de

Der Inhalt eines ListView-Steuerelements aus den Microsoft Common Controls ist über die ListItems und die ListSubItems (Version 6) bzw. die SubItems (Version 5) verstreut. Das ListView-Steuerelement selbst bietet Ihnen keine Möglichkeit, den Inhalt aus einer eigenen Eigenschaft auszulesen oder über eine Methode zu erhalten. Dabei wäre es doch ganz praktisch, den Inhalt in einem String zu erhalten, um ihn etwa in eine Excel-Tabelle (oder in ein anderes Grid) zu kopieren, oder um ihn etwa in einer CSV-Datei abzulegen.

Abhilfe schafft die folgende Funktion ListViewContents, die den Inhalt eines ListView-Steuerelements in einem Rutsch ausliest. Sie können dabei festlegen, ob die Spaltenköpfe (ColumnHeaders) ebenfalls ausgelesen und als erste Zeile vorangestellt werden sollen, und ob dann eine Leerzeile danach eingefügt werden soll. Weiterhin können Sie sowohl die Start- und Endzeile als auch die Start- und Endspalte festlegen. Als Zeilentrenner (RowSeparator) voreingestellt ist die übliche Kombination (vbCrLf) von CarriageReturn (Ascii 13) und LineFeed (Ascii 10), als Spaltentrenner (ColSeparator) das Tabulatorzeichen (vbTab, Ascii 9). Sie können aber auch für beides beliebige andere Zeichen oder Zeichenketten angeben.

Die Versionen dieser Funktion für ListViews der Version 5 und der Version 6 unterscheiden sich lediglich in dadurch, dass für die Version 6 der optionale Parameter UseSubItems hinzukommt, in dem Sie angeben können, ob Sie die ListSubItems oder die SubItems der ListItems verwendet haben (ListSubItems ist voreingestellt), und entsprechend auch der Block zum Auslesen der ListSubItems.

' Version 5:
Public Function ListViewContents(ListView As ListView, _
 Optional ByVal IncludeColumnHeaders As Boolean, _
 Optional ByVal StartRow As Long = 1, _
 Optional ByVal EndRow As Long, _
 Optional ByVal StartCol As Long = 1, _
 Optional ByVal EndCol As Long, _
 Optional ByVal EmptyLineAfterHeaders As Boolean, _
 Optional RowSeparator As String = vbCrLf, _
 Optional ColSeparator As String = vbTab) As String

' Version 6:
Public Function ListViewContents(ListView As ListView, _
 Optional ByVal IncludeColumnHeaders As Boolean, _
 Optional ByVal StartRow As Long = 1, _
 Optional ByVal EndRow As Long, _
 Optional ByVal StartCol As Long = 1, _
 Optional ByVal EndCol As Long, _
 Optional ByVal EmptyLineAfterHeaders As Boolean, _
 Optional RowSeparator As String = vbCrLf, _
 Optional ColSeparator As String = vbTab, _
 Optional ByVal UseSubItems As Boolean) As String

' Beide Versionen:
  Dim nStartRow As Long
  Dim nStartCol As Long
  Dim nEndRow As Long
  Dim nEndCol As Long
  Dim nRow As Long
  Dim nCol As Long
  Dim nContents As String
  Dim nLine As String
  
  With ListView
    If .View = lvwReport Then
      With .ListItems
        Select Case StartRow
          Case Is < 1
            nStartRow = 1
          Case Is > .Count
            nStartRow = .Count
          Case Else
            nStartRow = StartRow
        End Select
        Select Case EndRow
          Case 0
            nEndRow = .Count
          Case Is < nStartRow
            nEndRow = nStartRow
          Case Is < 1
            nEndRow = 1
          Case Is > .Count
            nEndRow = .Count
          Case Else
            nEndRow = EndRow
        End Select
        With ListView.ColumnHeaders
          Select Case StartCol
            Case Is < 1
              nStartCol = 1
            Case Is > .Count
              nStartCol = .Count
            Case Else
              nStartCol = StartCol
          End Select
          Select Case EndCol
            Case 0
              nEndCol = .Count
            Case Is < nStartCol
              nEndCol = nStartCol
            Case Is < 1
              nEndCol = 1
            Case Is > .Count
              nEndCol = .Count
            Case Else
              nEndCol = EndCol
          End Select
          If IncludeColumnHeaders Then
            For nCol = nStartCol To nEndCol - 1
              nContents = nContents & .Item(nCol).Text & ColSeparator
            Next 'ncol
            If EmptyLineAfterHeaders Then
              nContents = nContents & .Item(nEndCol).Text & _
               RowSeparator & RowSeparator
            Else
              nContents = nContents & .Item(nEndCol).Text & _
               RowSeparator
            End If
          End If
        End With

' Version 5:
        For nRow = nStartRow To nEndRow
          nLine = ""
          For nCol = nStartCol To nEndCol
            If nCol = 1 Then
              nLine = .Item(nRow).Text
            ElseIf nCol - 1 <= ListView.ColumnHeaders.Count Then
              nLine = nLine & ColSeparator & _
               .Item(nRow).SubItems(nCol - 1)
            End If
          Next 'nCol
          If nStartCol > 1 Then
            nLine = Mid$(nLine, 2)
          End If
          nContents = nContents & nLine & RowSeparator
        Next nRow

' Version 6:
        If UseSubItems Then
          For nRow = nStartRow To nEndRow
            nLine = ""
            For nCol = nStartCol To nEndCol
              If nCol = 1 Then
                nLine = .Item(nRow).Text
              ElseIf nCol - 1 <= ListView.ColumnHeaders.Count Then
                nLine = nLine & ColSeparator & _
                 .Item(nRow).SubItems(nCol - 1)
              End If
            Next 'nCol
            If nStartCol > 1 Then
              nLine = Mid$(nLine, 2)
            End If
            nContents = nContents & nLine & RowSeparator
          Next nRow
        Else
          For nRow = nStartRow To nEndRow
            nLine = ""
            For nCol = nStartCol To nEndCol
              If nCol = 1 Then
                nLine = .Item(nRow).Text
              ElseIf nCol - 1 <= .Item(nRow).ListSubItems.Count Then
                nLine = nLine & ColSeparator & _
                 .Item(nRow).ListSubItems(nCol - 1)
              End If
            Next 'nCol
            If nStartCol > 1 Then
              nLine = Mid$(nLine, 2)
            End If
            nContents = nContents & nLine & RowSeparator
          Next nRow
        End If

' Beide Versionen:
      End With
      ListViewContents = nContents
    End If
  End With
End Function

Beispiel-Projekte und Module modListViewContents (listviewcontents.zip - ca. 10,1 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer