Citar:
Cuando sueltas en ese control se genera el evento textbox2_drop y allí
sub textbox2_drop
textbox2.text=textbox1.drop
end sub
El problema de usar la propiedad Drop de un control es que te fuerzas a escribir código para saber desde que control se recibe el Drag&Drop. Si sólo se puede recibir el Drag&Drop de un único control lo anterior funcionará sin problemas, si hay más de un control, al arrastrar desde cualquier otro control estaría siempre colocando los datos de un único control que no es el que se está arrastrando (en este caso los datos de textbox1).
Se puede identificar el control que inició el arrastre de este modo:
Sin embargo, se usa la clase Drag para identificar el control que originó el D&D, cuando se puede usar directamente para asignar el dato que se está arrastrando.
-------------------------------------
Citar:
Al comienzo del procedimiento _MouseDrag() ¿vale con poner drag.Data=NULL ?
La sintaxis debería ser:
Sin embargo, esto da un error a pesar que Drag.Data es de tipo Variant. Aquí parece haber otro bug.
-------------------------------------
Citar:
Gracias Jesús pero Drag.Data es una propiedad de solo lectura
drag.Data = NULL da error.
La definición de Drag.Data es:
Si no me equivoco aquí hay una inconsistencia en el diseño de la clase, ya que por una lado usa Property Read y por otro lado permite establecer el valor de la propiedad Data. Tal vez esté hecho así intencionalmente pero no lo comprendo, más allá de que esté documentado:
Citar:
This class is static.
This class can be used as a function.
-------------------------------------
Citar:
De donde deduzco que hay que meter un stop event en el evento drag. Este evento se ejecuta siempre al iniciar una operación drag así que entiendo que hace falta alguna variable que valga si o no según se quiera o no se quiera cancelar el drag. En caso de que sea SI debería ejecutarse stop event.
El problema es que no quieres cancelar el D&D porque si no nada ocurriría. En todo caso puede pensarse de colocar STOP EVENT en el código del evento DROP:
Pensando que el evento se repite dos veces. Pero no es esto lo que ocurre en realidad, sino un bug en la clase Drag o bien en la clase TextBox.
-------------------------------------
Citar:
Estoy haciendo pruebas con el Drag and Drop y me repite los datos al hacer Drop .
El codigo es el siguiente:
El problema de la repetición del texto que se arrastra sólo se da cuando se usa gb.qt y el control destino es un TextBox (o un control que hereda de TextBox como TextArea). Claramente hay un bug, lo que no me queda claro si es en la clase Drag o en la clase TextBox.
La solución:
PUBLIC SUB TxaDespues_Drop()
TxaDespues.Text = Drag.Paste("")
END
-------------------------------------
Finalmente, decir que si se usa D&D con gb.gtk aparecen numerosos bugs, desde el bloqueo del uso del ratón para el servidor X, hasta la aparición de diversos errores N° 11 (SIGSEGV).