Immer wieder im Forum gefragt: "Wie kann ich Dateien aus einer einer FileListBox in eine zweite FileListBox verschieben oder auch kopieren?" Die Antwort ist recht einfach, unterstützt die VB-FileListBox doch OLE Drag & Drop. Private Sub Form_Load() ' File1 dient als Quelle File1.OLEDragMode = 1 ' File2 dient als Ziel File2.OLEDropMode = 1 End Sub Werden nun eine oder mehrere Dateien aus File1 nach File2 gezogen, wird autom. das File2_OLEDragDrop-Ereignis ausgelöst: Private Sub File2_OLEDragDrop(Data As DataObject, Effect As Long, _ Button As Integer, Shift As Integer, X As Single, Y As Single) ' Datei kopieren / verschieben Dim nPos As Integer Dim sFile As String Dim i As Integer Dim sPath As String If Data.Files.Count > 0 Then For i = 1 To Data.Files.Count sFile = Data.Files(i) nPos = InStrRev(sFile, "\") sFile = Mid$(sFile, nPos + 1) ' Zielpfad sPath = File2.Path & IIf(Right$(File2.Path, 1) <> "\", "\", "") ' Kopieren FileCopy Data.Files(i), sPath & sFile ' Falls verschieben -> Originaldatei jetzt löschen Kill Data.Files(i) Next i ' Ziel-Dateiliste aktualisieren File2.Refresh ' Falls verschieben, Quell-Dateiliste aktualisieren File1.Refresh End If End Sub So, und nun gestalten wir das Ganze noch ein wenig ansprechender, indem wir ein PopUp-Menü zur Auswahl der Aktion einblenden. Erstellen Sie hierzu mit dem VB-Menüeditor folgendes Menü: PopUp (Name: MenuPopUp, Visible: False) ...&Kopieren (Name: mnuPopUp, Index: 0) ...&Verschieben (Name: mnuPopUp, Index: 0) Beim Ziehen der Datei auf File2 soll nun zunächst ein PopUp-Menü angezeigt werden. Je nach Auswahl sollen die Datei dann entweder kopiert oder verschoben werden. Fügen Sie in den Allgemein-Teil der Form folgende Deklaration: Dim oFiles As DataObject Im File2_OLEDragDrop-Ereignis merken wir uns die Dateien und zeigen das PopUp-Menü an: Private Sub File2_OLEDragDrop(Data As DataObject, Effect As Long, _ Button As Integer, Shift As Integer, X As Single, Y As Single) If Data.Files.Count > 0 Then Set oFiles = Data ' PopUp-Menü anzeigen PopupMenu MenuPopUp End If End Sub Erst bei Auswahl eines Befehls aus dem PopUp-Menü wird die entsprechende Aktion ausgeführt: Private Sub mnuPopUp_Click(Index As Integer) ' Dateien kopieren / verschieben Dim nPos As Integer Dim sFile As String Dim i As Integer Dim sPath As String With oFiles For i = 1 To .Files.Count sFile = .Files(i) nPos = InStrRev(sFile, "\") sFile = Mid$(sFile, nPos + 1) ' Zielpfad sPath = File2.Path & IIf(Right$(File2.Path, 1) <> "\", "\", "") ' Kopieren FileCopy .Files(i), sPath & sFile ' Falls verschieben -> Originaldatei jetzt löschen If Index = 1 Then Kill .Files(i) Next i End With ' Ziel-Dateiliste aktualisieren File2.Refresh ' Falls verschieben, Quell-Dateiliste aktualisieren If Index = 1 Then File1.Refresh End Sub Dieser Tipp wurde bereits 22.290 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 (einschl. Beispielprojekt!) 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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. |
||||||||||||||||
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. |