Od samΘho
zaΦßtku VB podporuje p°etahovßnφ prvk∙ na formulß°i. Jednou z
nejjednoduÜÜφ implementacφ metod Drag And Drop je dßt u₧ivateli mo₧nost
aran₧ovßnφ prvk∙ na formulß°i p°i b∞hu aplikace. Jak ji₧ bylo zmφn∞no
d°φve, i toto lze provΘst pomocφ OLE metod, ale nenφ to b∞₧nΘ.
Standardnφ
Drag And Drop operace pou₧φvajφ argument Source p°i metod∞ Drag
pro zjiÜt∞nφ, kter² prvek je p°etahovßn - metoda OLEStartDrag tento
argument nemß. Samoz°ejm∞ m∙₧eme emulovat toto chovßnφ pomocφ formulß°ov²ch
prom∞nn²ch.
Pro vytvo°enφ
nßsledujφcφho p°φkladu p°idejte na formulß° tlaΦφtko, nastavte
vlastnost OLEDropMode formulß°e na 1-Manual a zapiÜte
nßsledujφcφ k≤d:
Private Source As
Control
Private Sub Command1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
' P°i°azenφ tlaΦφtka do prom∞nnΘ Source
Set Source = Command1
Command1.OLEDrag
End Sub
Private Sub Command1_OLEStartDrag(Data As DataObject, _
AllowedEffects As Long)
AllowedEffects = vbDropEffectMove
Data.SetData "" '
P°i°azenφ nulovΘho °et∞zce
End Sub
Private Sub Form_OLEDragDrop(Data As DataObject, _
Effect As Long, Button As Integer, Shift As Integer,
_
X As Single, Y As Single)
Dim ctl As Control
Set ctl = Source '
P°i°azenφ objektu Source
ctl.Move X, Y '
Volßnφ metody Move
End Sub
P°i
udßlosti MouseDown je prvek p°i°azen do prom∞nnΘ Source.
Hodnoty v udßlosti OLEStartDrag nejsou d∙le₧itΘ, ale ob∞ °ßdky
jsou podstatnΘ pro start p°etahovßnφ. V naÜem p°φpad∞ jsme pouze p°i°adili
nulov² °et∞zec do DataObject (pokud bychom pustili prvek jinde,
tak to spadne) a libovoln∞ nastavili vlastnost AllowedEffect.
Proto₧e
zde nenφ p°φmß reference na prvek TlaΦφtko, lze tento k≤d pou₧φt
pro p°etahovßnφ jakΘhokoliv prvku.
|