¿Qué vamos a ver en esta clase?
En esta clase vamos a tratar el tema de Drag & Drop en Access.
Exploraremos todos los métodos que nos permitirán obtener el deseado efecto. Dependiendo del tipo de objeto que queramos "arrastrar" y del quipo que queramos "soltar", utilizaremos uno de los métodos analizados.
Para ilustrar esta funcionalidad hemos preparado 7 ejemplos que no te dejarán indiferente:
1. Haremos Drag&Drop entre diversos objetos de un formulario (Checbox, combobox, cuadro de texto, botones de opción,...)
2. Pasaremos registros de un ListBox a otro ListBox.
3. Arrastraremos un fichero PDF a un cuadro que nos permitirá mostrar ese fichero en un objeto webBrowser, en tiempo de ejecución.
4. Arrastraremos una imagen a un formularrio y la mostraremos en ese instante en un objeto "picture".
5. Desplazaremos un nodo de un TreeView a otro TreeView.
6. Arrastraremos un nodo de un TreeView a un ListView para ejecutar una acción con el registro del ListView seleccionado.
7. Moveremos nodos de un TreeView dentro del propio objeto.
Nota de última hora: cuando ya teníamos preparada nuestra clase, nuestro amigo McPegasus, nos ha propuesto el ejemplo 8. Arrastrar un botón y colocarlo en un cuadro de texto. Hemos incluido este ejemplo que hemos desarrollado utilizando el método 1.
8. Arrastrar un "CommandButton" a un "TextBox".
Como podéis ver, hemos intentado ser rigurosos con esta clase y mostrar todas las opciones reales que nos ofrece Access para "simular" el proceso de Drag&Drop.
Al final de este artículo encontrarési un fichero .accdb con todos los ejemplos explicados y comentados como se ve en el vídeo, además de imágenes que hemos utilizado en nuestros ejemplos.
El código que te mostramos a contnuación está ordenado según el método utilizado. En la clase mostramos 3 maneras diferentes de ejecutar Drag&Drop en Access, por eso hemos incluido 3 bloques de código.
Además de todo el código anterior, en el ejemplo que te puedes descargar encontraras otros módulos en los que declaramos todas las variables o agrupamos todas las funciones de apoyo.
Índice de contenidos del vídeo (haz clíck en el enlace e irás directamente al monento del vídeo):
Presentación e introducción teórica de todas las posibilidades que existen para este evento.
Recursos que se ofrecen en esta clase
Método 1
Ejemplo 1: arrastrar y colocar diferentes objetos de formulario
Ejemplo 2: arrastrar y colocar campos entre dos ListView
Método 2
Ejemplo 3: arrastramos un fichero PDF a un formulario y lo mostramos en un objeto WebBrowser.
Ejemplo 4: arrastramos una imagen a un formulario y lo mostramos en un objeto picture.
Método 3
Ejemplo 5: arrastramos uno de un TreeView a otro TreeView.
Ejemplo 6: arrastramos nodo de un TreeView a un ListView.
Ejemplo 7: arrastramos y colocamos los nodos de un TreeView.
Código para construir los ejemplos 5 y 6.
Por último, te adjuntamos el ejemplo en Access para que te lo puedas descargar y utilizar en tus aplicaciones.
Créditos:
Imagen presentación: Mike Linksvayer | Flickr
Icono "Drag&Drop": rupa c | thenounproject
Música: Admiral Bob | Dig ccmixter
3 Comments
Buenos días,
Me parece un tutorial magnífico. Mis sinceras felicitaciones.
Tenéis disponible alguna versión que corra en 64bits?
Un saludo,
Hola Daniel, si adaptas las funciones de la API con ptrsafe, no deberías encontrar grandes problemas, pero no lo hemos probado ni adaptado a 64bits. No obstante, si lo haces, estaremos encantados de publicarlo. Gracias por tu interés.
Hola Luis, muchas gracias por tu respuesta. Tengo limitado conocimiento sobre llamadas a la API de Windows.
El compilador se atasca únicamente con la función SetWindowLong que he reemplazado con la equivalente en 64-bits: . Cuando recompilo, me lanza un error de tipos en el tercer parámetro de la llamada de la Sub SubcClassHookForm del modulo de clase. Veo que WindowProc devuelve un tipo Long, que es el mismo que requiere SetWindowLong para el tercer parámetro, por lo que no encuentro la forma de arreglarlo. Agradecería si podéis ayudarme en esto. Muchas gracias de antemano por vuestro tiempo.