Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0532: Drag und Drop in ListViews

 von 

Beschreibung 

Dieser Tipp demonstriert die Verwendung von Drag & Drop bei Listviews

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,67 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'---- Anfang Projektdatei Demo Drag & Drop ListView.vbp  ----
' Die Komponente 'Microsoft Windows Common Controls 6.0 (SP6) (mscomctl.ocx)' wird benötigt.

'--- Anfang Formular "Form1" alias Demo Drag & Drop ListView.frm  ---
' Steuerelement: Textfeld "Text1"
' Steuerelement: Listenanzeigesteuerungselement "ListView2"
' Steuerelement: Listenanzeigesteuerungselement "ListView1"
' Steuerelement: Beschriftungsfeld "Label1"
'
'Autor: Peter K. Sauer  peter.k.sauer@web.de

Option Explicit
 
Private Sub Form_Load()
    'Initialisierung
    Dim i As Integer
    Dim objItem As ListItem
 
    With ListView1
        .ColumnHeaders.Add , , "tx1", 800    'Demo-Header hinzufügen
        .ColumnHeaders.Add , , "tx2", 800    'Demo-Header hinzufügen
        .MultiSelect = True
        .View = lvwReport                    'Ansicht: Details
        .GridLines = True                    'Sichtbare Zeilenstriche an
        .OLEDragMode = ccOLEDragAutomatic
        
        For i = 1 To 5
            Set objItem = .ListItems.Add(, , "Eintrag " & i)
            .ListItems(i).SubItems(1) = "Sub" ' Demo-Text hinzufügen
        Next
    End With
 
    With ListView2
        .ColumnHeaders.Add , , "tx1", 800    'Demo-Header hinzufügen
        .ColumnHeaders.Add , , "tx2", 800    'Demo-Header hinzufügen
        .MultiSelect = True
        .View = lvwReport                    'Ansicht: Details
        .GridLines = True                    'Sichtbare Zeilenstriche an
        .OLEDropMode = ccOLEDropManual
    End With
End Sub
 
Private Sub ListView1_OLESetData(Data As MSComctlLib.DataObject, DataFormat As Integer)
    ' Beim klick auf ein Listview1 eintrag diesen "nehmen"
    ' oder bei Mehreren diese durch Enter ("vbCrLf") trennen
    
    Dim i As Integer
    Dim zw As String
 
    For i = 1 To ListView1.ListItems.Count
        If ListView1.ListItems(i).Selected Then
            If Len(zw) <> 0 Then
                zw = zw & vbCrLf
            End If
            zw = zw & ListView1.ListItems(i).Text
        End If
    Next
    
    Data.SetData zw
    DataFormat = vbCFText
End Sub
 
Private Sub ListView2_OLEDragDrop(Data As MSComctlLib.DataObject, _
Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)

    ' Einfügen der "gedroppten" Einträge
    Dim myItems() As String
    Dim myItemsData As String
    Dim objItem As ListItem
    Dim i As Integer
    
    ' nur zur Demo der übergebenen Daten
    If Data.GetFormat(vbCFText) Then
        Text1.Text = Data.GetData(vbCFText)
    End If
    
    If Data.GetFormat(vbCFText) Then
        myItemsData = Data.GetData(vbCFText)
        myItems = Split(myItemsData, vbCrLf, -1, vbBinaryCompare)
        For i = LBound(myItems) To UBound(myItems)
            Set objItem = ListView2.ListItems.Add(, , myItems(i))
        Next
        ListView2.Refresh
    End If
End Sub



'--- Ende Formular "Form1" alias Demo Drag & Drop ListView.frm  ---
'----- Ende Projektdatei Demo Drag & Drop ListView.vbp  -----

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 2 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Christian Sandrini am 08.07.2004 um 08:51

Hi,

Wie kann ich das einbinden, dass auch der tag, und das bild mitgegeben wird? Ich krieg das net hin...

Kommentar von matt am 08.01.2004 um 02:30

Thank you