Abrir archivos mediante OLE

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.

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *