Drag Drop en VFox6

Hola, soy Nicolás Locatelli, de Argentina.
He tratado de realizar operaciones drag-drop en modo manual, pero finalmente tengo que usar el modo automático porque de la otra manera el programa queda paralizado. Los ejemplos que trae el VF 6 son todos en modo automático.
Quizá hay algún paso que me falta.
¿Vos sabés al respecto? Gracias.
Respuesta
1
Nicolás, seguramente el problema radica en el final del arrastre. En el evento DragDrop del objeto en el que colocas el control que estas arrastrando.
Hago un copy paste de la información sobre este punto que viene en el manual.
************************************
El evento DragDrop recibe tres parámetros: oSource, nXCoord y nYCoord. El parámetro oSource es una referencia al control que se colocó sobre el destino. Los parámetros nXCoord y nYCoord contienen, respectivamente, las coordenadas horizontal y vertical del puntero del mouse dentro del destino.
Puesto que oSource es un objeto, se utiliza del mismo modo que un control; se puede hacer referencia a sus propiedades o llamar a uno de sus métodos. Por ejemplo, las instrucciones siguientes del código asociado al evento DragDrop comprueban si el usuario ha colocado un control sobre sí mismo:
LPARAMETERS oSource, nXCoord, nYCoord
IF oSource.Name != THIS.Name
* Realizar alguna acción.
ELSE
* El control se ha colocado sobre sí mismo.
* Realizar otra acción.
Endif
Todos los tipos posibles de control para oSource tienen una propiedad Visible. Por lo tanto, un control puede hacerse invisible cuando se coloca en una determinada parte de un formulario o sobre otro control. La siguiente línea del código asociado al evento DragDrop de un control Image hace que un control arrastrado desaparezca cuando se coloca sobre una imagen:
LPARAMETERS oSource, nXCoord, nYCoord
oSource.Visible = .F.
Indicar zonas de colocación válidas
Al habilitar arrastrar y colocar, puede ayudar a los usuarios; para ello, incluya claves visuales sobre dónde pueden y dónde no pueden colocar un control. Para ello, lo mejor que se puede hacer es cambiar la propiedad DragIcon del origen en el código asociado al evento DragOver.
El siguiente código del evento DragOver de un control indica a un usuario que el control no es un destino de colocación válido. En este ejemplo, cOldIcon es una propiedad del formulario definida por el usuario.
LPARAMETERS oSource, nXCoord, nYCoord, nState
DO CASE
CASE nState = 0 && Entrar
THISFORM.cOldIcon = oSource.DragIcon
oSource.DragIcon = "NODROP01.CUR"
CASE nState = 1 && Salir
oSource.DragIcon = THISFORM.cOldIcon
Endcase
Control del inicio y el final de arrastre
Visual FoxPro tiene un valor Manual para la propiedad DragMode que proporciona más control que el valor Automático. El valor Manual permite especificar cuándo se puede y cuándo no se puede arrastrar un control. (Cuando DragMode se establece como Automático, el control siempre se puede arrastrar a condición de que no se cambie el valor).
Por ejemplo, puede que necesite habilitar el arrastre como respuesta a eventos MouseDown y MouseUp o como respuesta a un comando del teclado o de menú. La configuración Manual también permite reconocer un evento MouseDown antes de comenzar a arrastrar, de modo que pueda registrar la posición del mouse.
Para habilitar el arrastre desde código, deje DragMode en su valor predeterminado (0 - Manual). A continuación, utilice el método Drag cuando quiera comenzar o detener el arrastre de un objeto:
Container. Control. Drag(nAction)
Si nAction es 1, el método Drag iniciará el arrastre del control. Si nAction es 2, se colocará el control, lo cual producirá un evento DragDrop. El valor 0 para nAction cancela el arrastre. El efecto es similar a dar el valor 2, salvo que no se produce ningún evento DragDrop.
Nota Para activar la capacidad de arrastrar y colocar desde un cuadro de lista, el mejor lugar para llamar al método Drag es el código asociado al evento MouseMove del cuadro de lista de origen, después de determinar que el botón del mouse está presionado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas