4D v19Drop position | 
            |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
                 
                
  | 
                
			
                    
                         
    4D v19
 
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.
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, 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 ifEl 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 v19)
	
	
	
	Manual de lenguaje 4D ( 4D v19.1)
Añadir un comentario