Q: Как при событии DragOver на TreeView подсвечивать элементы, над которыми проходит курсор. (типа так, как это делается в проводнике)?
A: Для этого есть свойство DropHighlight. Как правило, оно устанавливается через HitTest метод.
- Код: Выделить всё
Private Sub TreeView_OLEDragOver(...
...
If (State And vbLeave) = vbLeave Then
' покидаем TreeView
Set TreeView.DropHighlight = Nothing
Effect = vbDropEffectNone
Else
If Effect <> vbDropEffectNone Then
Set TreeView.DropHighlight = ctlCldata.HitTest(x, y)
If TreeView.DropHighlight Is Nothing Then
Effect = vbDropEffectNone
End If
...
End If
End If
...
End Sub
Q: Как из ListView на форме, который отображает список файлов, перекинуть DragDrop в проводник файл/группу файлов. Что-то надо передать объекту Data, но что?
A: Для этого служит специальный формат vbCFFiles. Его можно установить двояко - или сразу, или по требованию.
Сразу:
- Код: Выделить всё
Private Sub TreeView_OLEStartDrag(...
...
Call Data.Clear
Call Data.SetData(, vbCFFiles)
Call Data.Files.Add("DraggedFile1") ' можно и циклом
Call Data.Files.Add("DraggedFile2")
Call Data.Files.Add("DraggedFile3")
...
End Sub
По требованию
- Код: Выделить всё
Private Sub TreeView_OLEStartDrag(...
...
Call Data.Clear
Call Data.SetData(, vbCFFiles)
...
End Sub
Private Sub TreeView_OLESetData(...
If DataFormat = vbCFFiles Then
Call Data.Files.Add("DraggedFile1") ' можно и циклом
Call Data.Files.Add("DraggedFile2")
Call Data.Files.Add("DraggedFile3")
...
End If