Drag & Drop


Ir a la página 1, 2  Siguiente

Objetivo: Drag & Drop
Hola, soy nuevo en esto y estoy inetentando hacer algo simple pero bonito para comenzar... Estoy modificando el Reproductor de sonido que viene como ejemplo y quiero agregarle la opción de Drop...
el problema es que no se muy bien como hacerlo (hace tiempo no programo otra cosa que javascript o php ) y la documentación que encuentro por todos lados solo dice

EVENT Drop ( )

'This event is raised when a drag is dropped in the control.

PROPERTY Drop AS Boolean

'Returns or sets if a control accepts drops.

SUB Drag ( Data AS Variant [ , Format AS String ] )

'Starts a drag & drop process.

' * Data is the data to be dragged. It can be a String or an Image.
' * If Data is a text, then you can specify in Format the MIME type of this text. For example, "text/html".

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.

EVENT DragMove ( )

'This event is raised while the mouse moves inside the control during a drag & drop process.

'Event Cancellation
'If you stop the event with STOP EVENT, you indicate that the part of the control where the mouse cursor is does not accept the drop.


Y no tengo ni idea como usarlo. Estaría muy ineteresante que junto a esa información pusieran al menos 5 lineas de código a modo de ejemplo para gente como yo

Bueno, saludos

Perfil MP  
Objetivo: Re: Drag & Drop
Nunca he usado D&D, pero mira en los ejemplos que vienen con gambas, hay un ejemplo llamado precisamente "DragNDrop".

Es un proyecto muy simple, pero que muestra su uso básico.

Saludos

Perfil MP  
Objetivo: Re: Drag & Drop
Es muy simple.

1. En el control del que vas a hacer drop pones la propiedad DROP a TRUE.

2. En el control del que quieres hacer drag escribes el evento mousedrag (para hacer drag con el ratón)
PUBLIC SUB textbox_MouseDrag()

IF Mouse.left THEN
textbox.Drag(textbox.text)
ENDIF
END


Con eso ya has programado que cuando hagas drag en un textbox te lleves el contenido. Igual podrías llevarte cualquier otra cosa naturalmente. El método drag inicia el proceso drag y te llevas lo que hayas metido como argumento.

Así que ahora ya puedes arrastrar desde un textbox a otro por ejemplo. Te queda por programar lo que ocurrirá cuando hagas el drop. para eso está el evento drop
sub textbox2_drop
textbox2.text=textbox1.drop
end sub


Hay algún otro método para programar lo que ocurre mientras mueves el ratón y tal, pero lo fundamental es eso.


Perfil MP  
Objetivo: Re: Drag & Drop
He intentado ejecutar tu cogido en dos textbox ( textbox1 (parga hacer drag) y textbox2 (para hacer el drop) ).

Pero cuando lo ejecuto me da el siguiente error a la hora de pulsar el boton left del raton en el textbox1:

error_drag_and_drop

Y se queda bloqueado el raton, teniendo que salir del Gambas2, con el teclado.

¿que he hecho mal?


PUBLIC SUB TextBox1_MouseDrag()
IF Mouse.Left THEN
TextBox1.Drag(TextBox1.text)
ENDIF
END

PUBLIC SUB TextBox2_Drop()
TextBox2.text = TextBox1.Drop
END


He utilizado UBUNTU 9.10 y Gambas2-2.17

Objetivo: Re: Drag & Drop
Hola, he hecho pruebas y faltaria usar el objeto drop que no depende de quien envia, ya que no debes saber quien envia el dato sino solo el dato que llega al control.

PUBLIC SUB TextBox1_MouseDrag()

TextBox1.Drag("hola") 'El valor que sea, por defecto texto, si es otra cosa lo cambias por parámetro.

END

PUBLIC SUB TextBox2_Drop()

TextBox2.Text = Drag.Data

END

Y quieres algo chulo? con el mismo código que te he puesto prueba a arrastrar un archivo de una ventana del explorador de archivos al textbox2, se pondrá el nombre del archivo arrastrado en el textobox.
El objeto Drag contiene los datos del arrastre actual, junto con el tipo de datos.
En tu prueba podrias hacer que si el archivo es extension mp3 pues que suene.
Saludos y suerte!

Perfil MP  
Objetivo: Re: Drag & Drop
ep ep ep que falta poner en las propiedades del textbox2 el valor true a la propiedad Drop, en el diseño.

Perfil MP  
Objetivo: Re: Drag & Drop
Cierto cierto.

La propiedad DROP lo que hace es indicar que objetos pueden recibir un drag.

Cuando sueltas en ese control se genera el evento textbox2_drop y allí
sub textbox2_drop
textbox2.text=textbox1.drop
end sub


No conocía al objeto DRAG. Todos los días se aprende algo



Una cosa mas. El método drag (textbox1.drag(textbox1.text) admite un parámetro. Si no se pone se asume que lo que se copia es texto plano o imagen, pero si se pone el parámetro se puede especificar que es otro tipo de dato (como por ejemplo XML). El parámetro que se pone es el tipo MIME que se quiere usar y que por defecto es "text/html"

Control.drag("video.avi","video/x-msvideo")


Esta es la lista de los mimetypes (aunque por lo visto gambas no funciona con todos)

Mime Types

Perfil MP  
Objetivo: Re: Drag & Drop
Ok, ahora me funciona perfectamente.

He hecho una pequeña aplicación a modo de ejemplo.
cogerysoltar
Este es el codigo del formulario principal :

' gambas class file

'propiedades drog:
'TextBox2.Drop debes declararlas desde el editor de propiedades TRUE
'ListBox1.Drop debes declararlas desde el editor de propiedades TRUE
'listbox2.Drop debes declararlas desde el editor de propiedades TRUE


PUBLIC SUB Form_Open()
ListBox1.Add("Andalucia")
ListBox1.Add("Canarias")
listbox1.add("Murcia")
END


'coger
PUBLIC SUB TextBox1_MouseDrag()
IF Mouse.Left THEN
TextBox1.Drag(TextBox1.Text)
ENDIF
END

PUBLIC SUB ListBox1_MouseDrag()
IF Mouse.Left THEN
listbox1.Drag(ListBox1[ListBox1.index].text)
ENDIF
END

PUBLIC SUB ListBox2_MouseDrag()
IF Mouse.Left THEN
listbox2.Drag(ListBox2[ListBox2.index].text)
ENDIF
END



'soltar
PUBLIC SUB TextBox2_Drop()
TextBox2.text = Drag.Data
END


PUBLIC SUB ListBox1_Drop()
ListBox1.Add(Drag.data)
END
PUBLIC SUB listbox2_Drop()
ListBox2.Add(Drag.data)
END



La publicare en mi blog, gracias a todos por vuestras respuestas

Objetivo: Re: Drag & Drop
Estoy haciendo pruebas con el Drag and Drop y me repite los datos al hacer Drop .
El codigo es el siguiente:

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.Text = Drag.Data ' al parar aqui observo Drag.Data y los datos son correctos

END

Perfil MP  
Objetivo: Re: Drag & Drop
si, a mi también me pasó eso y no recuerdo bien pero creo que lo que hice fue hacer un drag.hide porque lo que pasa es que el drag sigue activo por si quieres pastear en otro sitio.

La verdad es que no lo recuerdo porque lo hice hace tiempo y tuve que darle bastantes vueltas hasta conseguirlo. Como no tengo el código aquí no lo puedo mirar, pero creo que fue eso.

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
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
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4714s (PHP: -76% SQL: 176%)
Consultas SQL: 45 - Debug off - GZIP Activado