Sección de códigos , trucos y ejemplos para visual basic


27 - Hacer un Drag Drop o arrastre de archivos

<Volver> - Anterior - Siguiente



 

Contenido

 

 

 

 

 

 

 


Actualización

Ejemplo actualizado para poder arrastrar ficheros y directorios hacia nuestra aplicación utilizando un módulo de clase

El proyecto tiene un formulario que permite arrastrar los archivos hacia un ListBox. también tiene dos funciones para poder recuperar el ícono asociado mediante el Api ExtractAssociatedIcon, y la descripción del mismo usando la función Api SHGetFileInfo

Nota: El drag se puede realizar solo en controles que posean la propiedad Hwnd

Para usar el módulo se debe instanciar con WithEvents para poder usar el evento que se dispara cuando se están colocando archivos en el control.

Para obtener los elementos arrastrados se debe usar el evento DragFiles, que tiene como parámetro el Path, el Hwnd del objeto, y un parámetro opcional para saber el tipo : : Directorio, Archivo o Root Path

Para iniciar la operación de arrastre, ejecutar el método InitDrag, y para detener el método TerminateDrag, pasándole a las dos funciones los hwnd de los controles

 

Descargar

 

 


Drag de archivos

Ejemplo que muestra como podemos por ejemplo arrastrar archivos desde Windows hacia un ListBox, y que aparezcan las rutas de los mismos en el control.

Las funciones Api que se utilizan para realizar esto son: DragAcceptFiles, DragQueryFile, SetWindowLong y CallWindowProc

Formulario con las rutas al hacer el drag de los archivos y directorios

vista del formulario de ejemplo en vb para hacer un drag and drop de archivos hacia el control listbox

 

Ejemplo

Código fuente en un módulo bas

 

Código fuente en un formulario


Hacer DragDrop sin el Api

Este ejemplo utiliza los eventos de vb, en este caso el evento Ole_DragDrop. El evento Ole_DragDrop posee un parámetro llamado Data. Este es un objeto que contiene, entre otros, una colección con los archivos que se están arrastrando. Entonces si ocurre el evento de Drag, se recorre mediante un bucle For Each Next, y se añaden a un control ListBox

Ejemplo


Comprobar archivos repetidos o duplicados

Este ejemplo es idéntico al anterior, pero antes de añadirlos al control listbox, se agregan las rutas de los archivos a una colección. Como cada item tiene una clave, si se intenta añadir una clave que ya existe se producirá el error 457 "El item ya se encuentra asociado a un elemento de la colección" , en ese caso se ignora y no se añade para evitar los elementos repetidos.

 


Recursos Visual basic - Enlaces relacionados:



Buscar en Recursos vb