Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 2
Ir a la página Anterior  1, 2
 
Drag & Drop
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: Drag & Drop 
 
Al comienzo del procedimiento _MouseDrag() ¿vale con poner drag.Data=NULL ?
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Drag & Drop 
 
Gracias soplo por responder he puesto el Drag.Hide y sigue igual..
 



 
angelnu - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Drag & Drop 
 
Gracias Jesús pero Drag.Data es una propiedad de solo lectura
drag.Data = NULL da error.
 



 
angelnu - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Drag & Drop 
 
Acabo de ver esto en la documentacion
Citar:

EVENT Drag ( )

This event is raised when the mouse enters the control during a drag & drop process.

Event Cancellation
If you stop the event with STOP EVENT, then the drop will be rejected.

Cancelación DRAG

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.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Drag & Drop 
 
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:

PUBLIC SUB TxtRecibeDrop_Drop()
SELECT CASE Drag.Source
  CASE ListBox1
    TxtRecibeDrop.Text = ListBox1.drop
  CASE ListBox2
    TxtRecibeDrop.Text = ListBox2.drop
END SELECT
END
 


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:

  Drag.Data(NULL)
 


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:

PUBLIC SUB TxtRecibeDrop_Drop()
   TxtRecibeDrop.Text = Drag.Data
   STOP EVENT
END
 


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).
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Drag & Drop 
 
Gracias Fabianfv por tu extensa respuesta, efectivamente Drag.Paste("") no provoca duplicar el texto, pero si parece que hay un o varios bugs
el codigo:

PUBLIC SUB ListBox1_MouseDrag()

    IF Mouse.Left THEN
    ' inicio el drag
  
     ListBox1.Drag(ListBox1[ListBox1.Index].Text, "text/plain")
  
    ENDIF

END

PUBLIC SUB TxaDespues_Drop()

     ' suelto el texto en un texarea
  TxaDespues.Pos = TxaDespues.Length  ' posicionamos al final del texto
  TxaDespues.Text &= Drag.Paste("") & "," ' añadimos una coma
  
END


El ultimo texto pegado siempre se pone al inicio no al final, y el texto que tuviera el control se pone detrás del texto pegado.

Efectivamente utilizo gb.qt

otra curiosidad el codigo:
PUBLIC SUB TextBox1_Drop()

  TextBox1.Text &= ListBox1.Drop
   STOP EVENT
END


Pone siempre una T delante del texto a pegar

Un saludo Angel
 



 
angelnu - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Drag & Drop 
 
Citar:

PUBLIC SUB TxaDespues_Drop()

    ' suelto el texto en un texarea
 TxaDespues.Pos = TxaDespues.Length  ' posicionamos al final del texto
 TxaDespues.Text &= Drag.Paste("") & "," ' añadimos una coma
 
END
 


El ultimo texto pegado siempre se pone al inicio no al final, y el texto que tuviera el control se pone detrás del texto pegado.


No pude reproducir el comportamiento que describes. Lo que observé es que el cursor de texto se ubica en la posición del puntero del ratón al momento en que sueltas el botón izquierdo y que no es posible ubicar el texto que se arrastra a un posición distinta.

¿Tienes una necesidad real de controlar que el texto se agregue al final? (ocurrirá de todos modos si el usuario lo hace así). ¿Podrías usar otro control en lugar de un TextBox?

Citar:

PUBLIC SUB TextBox1_Drop()

 TextBox1.Text &= ListBox1.Drop
  STOP EVENT
END
 


Pone siempre una T delante del texto a pegar


Tampoco hubo forma de que pudiera reproducir este comportamiento. ¿Podría ser que el TextBox tuviera el texto predefinido "TextBox1) y la "T" que mencionas fuera el primer caracter de ese texto?

Nota: Colocar STOP EVENT al final del evento DROP no tiene ningún efecto, puedes borrar esa línea.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Drag Drop, Drag Source, Tag Shell General 0 Domingo, 08 Octobre 2017, 12:28 Ver último mensaje
Shell
No hay nuevos mensajes Drag/Drop pittusa General 4 Domingo, 30 Enero 2011, 18:31 Ver último mensaje
pittusa
No hay nuevos mensajes Drag And Drop jose2190 General 3 Domingo, 19 Septiembre 2010, 11:22 Ver último mensaje
jsbsan
No hay nuevos mensajes Drag&Drop En Treeview Grandamakulo Controles/Librerías/Componentes 10 Sabado, 17 Diciembre 2016, 23:02 Ver último mensaje
Grandamakulo
 

Publicar nuevo tema  Responder al tema  Página 2 de 2
Ir a la página Anterior  1, 2

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario