Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20.6
Drop position
|
Drop position {( colNum | posXImagen )} -> Resultado | ||||||||
Parámetro | Tipo | Descripción | ||||||
colNum | posXImagen | Entero largo |
![]() |
Número de columna del list box (-1 si el soltar ocurre más allá de la última columna)o Posición coordenada X en la imagen | |||||
Resultado | Entero largo |
![]() |
Número (array/ list box) o posición (lista jerárquica) o Posición en cadena (texto/combo box) o elemento de destino o -1 si soltar ocurrió más allá del último elemento del array o de la lista | |||||
El comando Drop position puede utilizarse para descubrir la ubicación, en un objeto de destino “complejo”, donde un objeto ha sido (arrastrado y) soltado.
Generalmente, se utiliza Drop position cuando administra un evento arrastrar y soltar que se produce en un array, un list box, una lista jerárquica, un campo de texto o una imagen o un área 4D Write Pro.
Si llama Drop position cuando procesa un evento que no es del tipo arrastrar y soltar en un array, un list box, un combo box, una lista jerárquica, un texto o una imagen, o un área 4D Write Pro, el comando devuelve -1.
Importante: para que un objeto de formulario acepte los datos soltados, la propiedad Soltable debe estar seleccionada. Igualmente, su método de objeto debe ser activado por el evento On Drag Over y/o On Drop, para procesar estos eventos.
En el siguiente ejemplo, una lista de sumas debe ser desglosada por mes y por persona. La operación se efectúa arrastrando y soltando entre dos list boxes:
El método de objeto list box de la derecha (origen) contiene el siguiente código:
If(Form event code=On Begin Drag Over) //El evento debe seleccionarse para el list box
C_BLOB($tomove)
C_TEXT($val)
LISTBOX GET CELL POSITION(*;"LBPaid";$col;$row)
$val:=PaidCol{$row}
VARIABLE TO BLOB($val;$tomove)
APPEND DATA TO PASTEBOARD("mydrag";$tomove) //utilice una llave personalizada
End if
El método de objeto list box de la izquierda (destino) contiene el siguiente código:
Case of
:(Form event code=On Drag Over) //El evento debe seleccionarse para el list box
C_BLOB($toGet)
C_LONGINT($rownum)
$rownum:=Drop position($colnum)
GET PASTEBOARD DATA("mydrag";$toGet) //obtener datos
If(Pasteboard data size("mydrag")>0)&($colnum#1)) //Si los datos están en el portapapeles
$0:=0 //podríamos aceptar el soltar
Else
$0:=-1 //Se rechaza el soltar
End if
:(Form event code=On Drop) //el evento debe seleccionarse para el list box
C_BLOB($toGet)
C_LONGINT($rownum;$val)
$rownum:=Drop position($colnum)
GET PASTEBOARD DATA("mydrag";$toGet)
BLOB TO VARIABLE($toGet;$val) //obtener el valor
If(Pasteboard data size("mydrag")>0))
If($colnum=1)
BEEP
Else
Case of //Adición de los valores soltados
:($colnum=2)
John{$rownum}:=John{$rownum}+$val
:($colnum=3)
Mark{$rownum}:=Mark{$rownum}+$val
:($colnum=4)
Peter{$rownum}:=Peter{$rownum}+$val
End case
DELETE FROM ARRAY(PaidCol;Find in array(PaidCol;$val)) //Actualizar listbox de origen
End if
End if
End case
Producto: 4D
Tema: Arrastrar y soltar
Número
608
Modificado: 4D v11 SQL
Modificado: 4D v12
Manual de lenguaje 4D ( 4D v20)
Manual de lenguaje 4D ( 4D v20.1)
Manual de lenguaje 4D ( 4D v20.2)
Manual de lenguaje 4D ( 4D v20.3)
Manual de lenguaje 4D ( 4D v20.4)
Manual de lenguaje 4D ( 4D v20.5)
Manual de lenguaje 4D ( 4D v20.6)