Jednφm z
nejb∞₧n∞jÜφch scΘnß°∙, kde jsou operace Drag And Drop oΦekßvßny
(a takΘ vysoce hodnoceny), zahrnujφ p°esouvßnφ polo₧ek z jednoho
ListBoxu do druhΘho. Typicky jsou k dispozici i tlaΦφtka, ale ty pot°ebujφ
dv∞ kliknutφ myÜi (v²b∞r polo₧ky a kliknutφ na tlaΦφtko). Mnohem
efektivn∞jÜφ je vyu₧itφ metod Drag And Drop, proto₧e vy₧aduje pouze
jednoduch² pohyb myÜφ
(v²b∞r a ta₧enφ).
Pro nßsledujφcφ
p°φklad vlo₧te na formulß° dva ListBoxy a nastavte vlastnost OLEDropMode
na 1-Manual. P°idejte nßsledujφcφ k≤d:
Private Sub Form_Load()
' Napln∞nφ jednoho ListBoxu
List1.AddItem "Jedna"
List1.AddItem "Dva"
List1.AddItem "T°i"
List1.AddItem "╚ty°i"
List1.AddItem "P∞t"
End Sub
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
List1.OLEDrag '
ZaΦßtek p°etahovßnφ
End Sub
Private Sub List1_OLEStartDrag(Data
As DataObject, AllowedEffects As Long)
' Povolen pouze p°esun
AllowedEffects = vbDropEffectMove
' P°i°azenφ v²b∞ru v ListBoxu do DataObject
Data.SetData List1
End Sub
Private Sub List2_OLEDragDrop(Data As DataObject, Effect As Long, _
Button As Integer, Shift As Integer, X As Single, Y
As Single)
Dim strList As String
' Test formßtu dat v DataObject
If Not Data.GetFormat(vbCFText) Then Exit Sub
' Zφskßnφ textu z DataObject
strList = Data.GetData(vbCFText)
List2.AddItem strList
End Sub
Private Sub List1_OLECompleteDrag(Effect As Long)
' Odebrßnφ polo₧ky z ListBoxu
List1.RemoveItem List1.ListIndex
End Sub
V udßlosti OLEStartDrag
jsme p°i°adili vybranou polo₧ku ve zdrojovΘm ListBoxu do DataObject.
Nepot°ebujeme specifikovat formßt, DataObject sßm rozpoznß text.
V udßlosti OLEDragDrop cφlovΘho ListBoxu je pou₧ita metoda GetFormat
pro DataObject, abychom se ujistili, ₧e DataObject obsahuje
text - pokud bychom se pokouÜeli p°etßhnout jin² typ dat, tak by to
mohlo celΘ padnout. vbCFText je konstanta z kolekce ClipBoardConstants.
Jist∞ jste si vÜimli,
₧e v²stup z metody GetData jsme p°i°adili do prom∞nnΘ typu
String. Je to z toho d∙vodu, ₧e p°idßvßnφ polo₧ek do ListBoxu se d∞je
pomocφ metody AddItem. Pro TextBox by mohl b²t v²stup p°i°azen p°φmo:
Text1.Text =
Data.GetData(vbCFText)
Techniky, pou₧itΘ v
tomto p°φklad∞ budou pracovat tam, kde pot°ebujete p°etahovat text -
mezi prvky a formulß°i, mezi formulß°i nebo mezi VaÜφ aplikacφ a jin²mi
aplikacemi, jako je nap°φklad Microsoft Word, pokud podporujφ techniky
Drag And Drop.
|