Drag and Drop en Rejilla


([N1] Almaro) #1

Muy buenos días

Este es mi primer post en el foro, soy un novato. Por lo tanto disculpadme si digo alguna burrada.

Estoy haciendo una pequeña aplicación para gestionar transportes. En el formulario tengo dos rejillas una con los envíos asignados a un transporte (fecha y camión) y otra rejilla con los envíos que aun no tienen asignado un transporte. Evidentemente uso las rejillas para meter o quitar envíos de un transporte. Cada rejilla tiene su proceso drop para cambiar los campos asignando en un caso y quitando esta asignación en el otro. Es decir, puedo pasar envíos de una rejilla a otra y viceversa. Todo funciona mas o menos bien, pero cuando por error hago drag en una fila de la rejilla y el drop lo hago sobre la misma rejilla por que me he dado cuenta que la fila seleccionada no es la correcta, la linea desaparece. Tengo que salir del formulario y volver a entrar para que vuelva a aparecer ese registro. Subo una captura para que veáis el formulario y las dos rejillas.

¿Hay algo que este mal hecho? ¿Como puedo hacer para que si sueltas el botón en la misma rejilla, no ocurra nada?

Gracias por vuestra ayuda

[attachment=19649,1572]


([N3] Juanjo) #2

Hola Almaro:

Yo tuve que solucionarlo mediante un Timer en el formulario.

El evento timer evalua una variable (REFRESCAR).
Cuando finaliza el drop, pones la variable a 1.

En el timer, si el valor es 1, es cuando refrescas las rejillas (de otro modo estaría refrescando continuamente, ya que interesa que dispare el timer cada poco: 1 seg. ) y luego pones la variable a 0.

Esperemos que en nuevas versiones se solucione.

Un saludo, Juanjo,


([N1] cristianvg2003) #3

Hola,

Realmente no hay necesidad en el form a cada uno de los controles objetos les asocias una conexion de evento "drop finalizado" que con los comandos de interfaz se encargue de refrescarse a si mismos.

otra opción que podrías verficar (no lo he probado) es ver que pasa si le indicas un "retorno no" al evento Drop de la rejilla para ver si logras que no se ejecute el evento Drag&Drop,

Saludos


([N3] Juanjo) #4

Hola cristianvg2003:

Lo solucioné con el timer (no había otra forma) a propuesta de Velneo en un soporte de Mayo de 2010, y la verdad que no he vuelto a incidir sobre el asunto.

Lo he intentado como dices: Sin timer, y al finalizar el drop, recalcular las dos rejillas. Pero si haces drag&drop en la misma rejilla, esa línea desaparece y no se refresca correctamente.

Un saludo, Juanjo.


([N1] Almaro) #5

Gracias a todos por vuestras respuestas, de momento he puesto un boton para refrescar en manual, mas adelante generare un evento.

Un saludo.