Ejemplo para abrir archivos e imágenes utilizando Drag & Drop y OLE.
Los controles TextBox y PictureBox poseen compatibilidad con la tecnología OLE, la que permite arrastrar y pegar información desde otras aplicaciones y del mismo explorador. En este ejemplo vamos a hacer una programa que permita copiar y mover una imagen de un Picture a otro y a la vez abrir archivos de gráficos arrastrados desde el explorador.
Crea un formulario y coloca en él 2 controles Picture, llámalos picPartida y picDestino respectivamente y cargue cualquier imagen en el picPartida (propiedad Picture)
En el PictureBox picPartida establece la propiedad OLEDragMode a 1-Automatic y OLEDropMode a 0-None, y en el picDestino la propiedad OLEDragMode a 0-Manual y OLEDropMode a 1-Manual. Luego pega en el formulario el siguiente código:
Option Explicit
Private Sub picDestino_OLEDragDrop(Data As DataObject, Effect As Long, _
Button As Integer, Shift As Integer, X As Single, Y As Single)
'Si se ha arrrastrado una imagen
If Data.GetFormat(vbCFDIB) Then
'Tomamos la información
Set picDestino.Picture = Data.GetData(vbCFDIB)
'Si se han arrastrado archivos
ElseIf Data.GetFormat(vbCFFiles) Then
'Prevenimos un posible error
On Error Resume Next
'Al intentar cargar el primero de los archivos
Set picDestino.Picture = LoadPicture(Data.Files(1))
If Err Then 'Si se produce un error
'Indicamos que no es posible abrirlo
MsgBox "No es posible abrir el archivo " & Data.Files(1)
End If
End If
'En caso de que esté pulsada la techa Ctrl
If Shift And vbCtrlMask Then
'La operación es mover
Effect = vbDropEffectMove
End If
End Sub
Private Sub picDestino_OLEDragOver(Data As DataObject, Effect As Long, _
Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)
'Si el formato es el apropiado
If Data.GetFormat(vbCFDIB) Or Data.GetFormat(vbCFFiles) Then
'En caso de que esté pulsada la techa Ctrl
If Shift And vbCtrlMask Then
'La operación es mover
Effect = vbDropEffectMove
End If
Else 'Si el formato no es el esperado
Effect = vbDropEffectNone 'No aceptamos
End If
End Sub
Ejecute la aplicación. Puede arrastrar la imagen del picPartida al picDestino para copiarla. Si mantiene pulsada la tecla CTRL la imagen se moverá. También puede arrastrar archivos de imágenes desde el explorador al picDestino para abrirlos.