Avatar billede Dazzle Novice
19. april 2005 - 10:46 Der er 1 løsning

Træk-og slip i VB

Jeg er i gang med at program der skal indeholde en liste over min musik i VB. Jeg vil gerne kunne trække en mappe hen over et vindue, således at indholdet af mappen bliver sat ind i en tabel eller lign. med samme filnavn. Idéen er, at jeg ikke skal til at indtaste det hele selv... Jeg ved ikke om det er noget der kan lade sig gøre, så er der nogen der kan hjælpe mig??
Avatar billede hiks Nybegynder
19. april 2005 - 12:49 #1
hej

jeg havde lige lidt kvalitetstid så her er lidt du kan lege med som udgangspunkt. Tilføj 1 listview og nedenstående kode:

Private Sub Form_Load()

    With ListView1
        .ColumnHeaders.Add , , "Filnavn", ListView1.Width / 2
        .ColumnHeaders.Add , , "Filtype", ListView1.Width / 2
        .View = lvwReport
        .OLEDragMode = ccOLEDragAutomatic
        .OLEDropMode = ccOLEDropManual
    End With

End Sub

Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, _
                Button As Integer, Shift As Integer, X As Single, Y As Single)

    Dim noFiles As Integer
   
    noFiles = Data.Files.Count
   
    If noFiles > 0 Then
    For i = 1 To noFiles
        Select Case GetAttr(Data.Files(i))
            Case vbNormal, vbReadOnly, vbHidden, vbSystem, vbArchive
                Call TilfojEnkeltFil(Data.Files(i))
            Case vbDirectory
                Call TilfojDir(Data.Files(i))
            Case Else
                'håndter fejl etc.
                MsgBox "Filen kan ikke genkendes: " & Data.Files(i)
        End Select
    Next

    Else
        Exit Sub
    End If
   
    MsgBox "Antal filer: " & ListView1.ListItems.Count
   
End Sub

Private Sub TilfojEnkeltFil(sti As String)
    Dim filtype As String
    Dim noIndex As Integer
   
    Select Case LCase(Right(sti, 3))
        Case "exe"
            filtype = "Programfil"
        Case "mp3"
            filtype = "Lydfil"
        Case "xls"
            filtype = "Excelark"
        Case Else
            filtype = "Anden filtype"
    End Select
   
    With ListView1
        noIndex = .ListItems.Count
        .ListItems.Add noIndex + 1, , sti
        .ListItems(noIndex + 1).SubItems(1) = filtype
    End With

End Sub

Private Sub TilfojDir(sti As String)
    Dim fso As New FileSystemObject
    Dim folderX As Folder
    Dim fileX As File
   
    If fso.FolderExists(sti) = True Then
        Set folderX = fso.GetFolder(sti)
       
        For Each fileX In folderX.Files
            Call TilfojEnkeltFil(fileX.Path)
        Next
       
        Set fileX = Nothing
        Set folderX = Nothing
        Set fso = Nothing
    Else
        'stien eksisterer ikke
        Exit Sub
    End If
End Sub

'----------------- her til ----------------

mvh Hiks
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester