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.