PROCEDURE MueveControl()
    // Obtener las coordenadas del cursor relativas al formulario
    nCursRow := GetCursorPos()[1] - Form_1.Row - 25 
    nCursCol := GetCursorPos()[2] - Form_1.Col - 15


       Form_1.&(cName).Row := nCursRow
  	Form_1.&(cName).Col := nCursCol 


IF HayPiezaEnPosicion(nCursRow, nCursCol )
   EliminarPiezaEnPosicion(nCursRow, nCursCol )
ENDIF

  
RETURN NIL

  
FUNCTION HayPiezaEnPosicion(nCursRow, nCursCol )
   LOCAL cControlName ,  cControl
   
      cControlName := GetClassName(cControl) // Obtener el nombre del control
      IF cControlName $ (cName) // Verificar si el nombre del control está en la matriz cName
         IF cControl:Row == nRow .AND. cControl:Col == nCol
            RETURN .T. // Hay una pieza en la posición dada
         ENDIF
       ELSE  
         *   MSGINFO(cName  ) // Sale el nombre de la pieza que movemos
      ENDIF
   RETURN .F. // No hay pieza en la posición dada

FUNCTION EliminarPiezaEnPosicion(nCursRow, nCursCol )
   LOCAL cControlName ,  cControl

      cControlName := GetClassName(cControl) // Obtener el nombre del control
      IF cControlName $ (cName) // Verificar si el nombre del control está en la matriz cName
         IF cControl:Row == nRow .AND. cControl:Col == nCol
            cControl:Visible := .F. // Ocultar la imagen de la pieza
            Form_1.&(cName[i]).Visible := .F.
            RETURN .F. // Salir del bucle una vez que se oculta la pieza
         ENDIF
      ELSE
            Form_1.&(cName[i]).Visible := .F.
      ENDIF

RETURN NIL   

   
  
