Snad nejvφce
p°evlßdajφcφ vyu₧itφ
pro operace Drag And Drop je p°etahovßnφ soubor∙ mezi Pr∙zkumnφkem
Windows as ostatnφmi aplikacemi. Jednφm z p°φklad∙ aplikacφ, kde je
takovΘto p°etahovßnφ p°φnosem je nap°φklad prohlφ₧eΦ obrßzk∙,
kdy do n∞j u₧ivatel pouze p°etßhne obrßzek a ten se rovnou otev°e.
Pro nßsledujφcφ
p°φklad pou₧ijeme formulß°e, vytvo°enΘ v p°edchozφm p°φpad∞. P°idßme
pouze k≤d, kter² umo₧nφ akceptovat p°etahovanΘ polo₧ky prvku
PictureBox na prvnφm formulß°i. Nastavte tedy vlastnost OLEDropMode prvku
PictureBox na prvnφm formulß°i na 1-Manual a zapiÜte do prvnφho
formulß°e nßsledujφcφ k≤d:
Private Sub
Picture1_OLEDragOver(Data As DataObject, _
Effect As Long, Button As Integer, Shift As Integer,
_
X As Single, Y As Single, State As Integer)
If Not Data.GetFormat(vbCFFiles) Then
Effect = vbDropEffectNone
' Nepovolit puÜt∞nφ
End If
End Sub
Private Sub Picture1_OLEDragDrop(Data As DataObject, _
Effect As Long, Button As Integer, Shift As Integer,
_
X As Single, Y As Single)
Dim strFilename As String
' ZjiÜt∞nφ jmΘna souboru z kolekce Files
strFilename = Data.Files(1)
' Nahrßnφ obrßzku
Picture1.Picture = LoadPicture(strFilename)
End Sub
K≤d, pou₧it² pro
puÜt∞nφ soubor∙ nenφ p°φliÜ odliÜn² od p°edchozφch p°φklad∙.
V tomto p°φpad∞ si otestujeme formßt pomocφ parametru vbCFFiles.
Objekt DataObject obsahuje kolekci Files, kterß m∙₧e
obsahovat jeden nebo vφce polo₧ek, p°iΦem₧ ka₧dß z nich obsahuje °et∞zec,
kter² reprezentuje jmΘno a cestu k souboru. Tak jako v p°φklad∞
ListBoxu musφme nejprve hodnotu ulo₧it do °et∞zcovΘ prom∞nnΘ, nebo¥
metoda LoadPicture to vy₧aduje.
M∙₧e b²t takΘ velice u₧iteΦnΘ,
pokud povolφte p°etahovßnφ obrßzk∙ z vaÜφ aplikace p°φmo do Pr∙zkumnφka
nebo editoru obrßzk∙. Pro demonstraci zmodifikujeme Φßst k≤du v prvnφm
formulß°i. Proto₧e PictureBox neuklßdß jmΘno souboru, budeme pot°ebovat
ulo₧it jej do formulß°ovΘ prom∞nnΘ (do deklaracφ ve formulß°i):
Private strFile As
String
Na udßlost Form_Load
musφme p°i°adit do prom∞nnΘ jmΘno souboru a nahrßt obrßzek:
strFile =
"cesta+soubor"
Picture1.Picture = LoadPicture(strFile))
Budeme muset takΘ zm∞nit k≤d
udßlosti OLEDragDrop pro aktualizaci jmΘna souboru:
strFile =
strFileName
A koneΦn∞ budeme muset
modifikovat udßlost OLEStartDrag pro p°etahovßnφ soubor∙ namφsto
obrßzk∙. V tomto p°φpad∞ pouze p°i°adφme formßt metod∞ SetData,
a pak p°idßme k≤d do udßlosti OLESetData pro nahrßnφ souboru:
Data.SetData ,
vbCFFiles
Private Sub Picture1_OLESetData(Data As DataObject, _
DataFormat As Integer)
Data.Files.Add strFile
End Sub
Udßlost OLESetData je vyvolßna pouze v p°φpad∞,
kdy₧ je proveden drop, tak₧e pokud je operace p°eruÜena, uÜet°φme Φas
a pam∞¥ tφm, ₧e neuklßdßme soubor v udßlosti OLEStartDrag.
Pokud budete chtφt p°etahovat vφce soubor∙, musφte jejich jmΘna ulo₧it
do ListBoxu.
|