Barvna shema: Temna
Trenutno dejavna stran: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Aus dem Datei-Explorer abgelegte Dateien annehmen

Aus dem Datei-Explorer abgelegte Dateien annehmen

Benutzer ziehen Dokumente, Bilder oder Ordner aus dem Datei-Explorer auf einen Datensatz eines Rasters oder einen Knoten einer Struktur. Ihre Anwendung speichert sie so, wie sie es braucht: als Datensätze, als Pfade in einem Feld oder als Kopien in einem Ordner.

Voraussetzungen: WKL Forms Object Library 1.57 oder höher.

Lösungsüberblick

Mit AllowFileDrop = True nehmen WklGrid, WklTreeList, WklGantt und WklTreeView Dateien aus dem Datei-Explorer an. Während der Benutzer zieht, meldet FileDragOver jedes neue Ziel; mit Cancel lehnen Sie es ab. Nach dem Ablegen meldet FileDrop die vollständigen Pfade, den Schlüssel des Zieldatensatzes oder Zielknotens und die Position. Das Steuerelement schreibt selbst nichts: Ihr Code in FileDrop entscheidet, was aus den Dateien wird, und Requery zeigt danach die neuen Datensätze an.

Umsetzung

Ein Raster grdDokumente zeigt tblDokumente (ID als AutoWert, KundeID, Dateiname, Dateipfad) des aktuellen Kunden. Abgelegte Dateien werden zu Datensätzen dieses Kunden; Ordner werden schon beim Ziehen abgelehnt.

Private Sub Form_Load()
    Me!grdDokumente.Object.AllowFileDrop = True    ' or in the designer: page Behavior, card Files from Explorer
End Sub
 
Private Sub grdDokumente_FileDragOver(ByVal Files As Variant, ByVal TargetKey As Variant, _
        ByVal Position As Long, Cancel As Integer)
    Dim path As Variant
    For Each path In Files
        If (GetAttr(path) And vbDirectory) = vbDirectory Then Cancel = True: Exit Sub
    Next
End Sub
 
Private Sub grdDokumente_FileDrop(ByVal Files As Variant, ByVal TargetKey As Variant, ByVal Position As Long)
    Dim path As Variant
    For Each path In Files
        CurrentDb.Execute "INSERT INTO tblDokumente (KundeID, Dateiname, Dateipfad) VALUES (" & Me!ID & ", '" & _
            Replace(Mid$(path, InStrRev(path, "\") + 1), "'", "''") & "', '" & Replace(path, "'", "''") & "')", dbFailOnError
    Next
    Me!grdDokumente.Object.Requery
End Sub

Hinweise

  • Argumente: Files ist ein nullbasiertes Array vollständiger Pfade (mit For Each oder UBound durchlaufen). TargetKey ist der Schlüssel des Datensatzes oder Knotens unter dem Mauszeiger; unterhalb des letzten Eintrags, auf einer Gruppenzeile und auf der Zeile für einen neuen Datensatz ist er Null. Position ist ein WklDropPosition (wdpBefore, wdpAfter, wdpInside); eine Struktur kann eine Datei damit vor, nach oder unter einem Knoten einordnen.
  • Halten Sie FileDragOver kurz. Der Datei-Explorer wartet während des Ziehens auf dieses Ereignis. FileDrop läuft erst nach dem Ablegen; dort dürfen Sie Meldungen anzeigen, Dateien kopieren oder den Benutzer fragen.
  • Nur Dateien. Text aus Word, eine E-Mail aus Outlook oder die eigenen gezogenen Knoten des Steuerelements sind keine Dateien; das Steuerelement lehnt sie ohne Ereignis ab. Um E-Mails oder Anlagen anzunehmen, speichern Sie sie zuerst in einem Ordner.
  • Nur in der Formularansicht. In der Entwurfsansicht und in Berichten nimmt das Steuerelement keine Dateien an.
  • Ereignisdeklarationen: Deklarieren Sie Position als Long oder als WklDropPosition (Letzteres erfordert den Verweis auf die Bibliothek der WKL Forms Object Library). Cancel muss als Referenz übergeben werden (Cancel As Integer).
  • Die Einstellung wird mit dem Formular gespeichert. Sie ändert AllowDragDrop nicht; diese Eigenschaft steuert das Verschieben von Knoten innerhalb einer Struktur.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/accept-files-from-explorer.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille