Sprejemanje datotek, povlečenih iz Raziskovalca
Uporabnikom omogočite, da dokumente, slike ali mape iz Raziskovalca povlečejo na zapis mreže ali vozlišče drevesa, in jih shranite tako, kot potrebuje vaša aplikacija: kot zapise, kot poti v polju ali kot kopije v mapi.
Zahteva WKL Forms Object Library 1.57 ali novejšo različico.
Pregled rešitve
Z AllowFileDrop = True kontrolniki WklGrid, WklTreeList, WklGantt in WklTreeView sprejemajo datoteke iz
Raziskovalca. Med vlečenjem dogodek FileDragOver sporoči vsak nov cilj, ki ga lahko zavrnete s Cancel; po spustu
dogodek FileDrop sporoči celotne poti, ključ ciljnega zapisa ali vozlišča in položaj. Kontrolnik sam ne zapiše
ničesar: vaša koda v FileDrop odloči, kaj postanejo datoteke, Requery pa nato prikaže nove zapise.
Izvedba
Mreža grdDokumenti prikazuje tabelo tblDokumenti (ID s samoštevilom, StrankaID, ImeDatoteke, PotDatoteke)
trenutne stranke. Spuščene datoteke postanejo zapisi te stranke; mape so zavrnjene že med vlečenjem.
Private Sub Form_Load()
Me!grdDokumenti.Object.AllowFileDrop = True ' or in the designer: page Behavior, card Files from Explorer
End Sub
Private Sub grdDokumenti_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 grdDokumenti_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 tblDokumenti (StrankaID, ImeDatoteke, PotDatoteke) VALUES (" & Me!ID & ", '" & _
Replace(Mid$(path, InStrRev(path, "\") + 1), "'", "''") & "', '" & Replace(path, "'", "''") & "')", dbFailOnError
Next
Me!grdDokumenti.Object.Requery
End Sub
Opombe
- Argumenti:
Filesje polje celotnih poti z začetnim indeksom 0 (uporabiteFor EachaliUBound);TargetKeyje ključ zapisa ali vozlišča pod miško oziromaNullpod zadnjim, na vrstici skupine in na vrstici za nov zapis;PositionjeWklDropPosition(wdpBefore,wdpAfter,wdpInside), zato lahko drevo datoteko postavi pred vozlišče, za njega ali podenj. FileDragOvernaj bo kratek. Raziskovalec med vlečenjem čaka nanj.FileDropse izvede, ko je spust že končan, zato lahko prikazuje sporočila, kopira datoteke ali kaj vpraša uporabnika.- Samo datoteke. Besedilo iz Worda, sporočilo iz Outlooka ali vozlišča, ki jih vleče kontrolnik sam, niso datoteke; kontrolnik jih zavrne brez dogodka. Če želite sprejemati sporočila ali priloge, jih najprej shranite v mapo.
- Samo v pogledu obrazca. V pogledu načrta in v poročilih kontrolnik ne sprejema datotek.
- Deklaracije dogodkov:
Positiondeklarirajte kotLongali kotWklDropPosition(za slednje potrebujete sklic na knjižnico WKL Forms Object Library);Cancelmora biti podan po sklicu (Cancel As Integer). - Nastavitev se shrani z obrazcem. Ne spremeni lastnosti
AllowDragDrop, ki premika vozlišča znotraj drevesa.