Mensaje    Asunto: Drag and Drop en el mismo DBGrid Responder citando

Como se puede implementar Drag and Drop en el mismo DBGrid, la idea es arrastrar una fila y se deberá soltar sobre otra fila del mismo dbgrid, la fila arrastrada tomara la nueva posición y las demas se desplazaran, para controlar la posición se posee un campo numérico llamado ORDEN, el cual solo maneja nros enteros y un campo de clave unica llamada ID.

He tratado de activar el Drag and Drop de la siguiente manera en un grid llamado grdDet
Código:
void __fastcall TwClaseActividad::grdDetDragOver(TObject *Sender,
      TObject *Source, int X, int Y, TDragState State, bool &Accept)
{
  Accept = ( Source == grdDet );//Si es el mismo grid
}
//---------------------------------------------------------------------------

void __fastcall TwClaseActividad::grdDetDragDrop(TObject *Sender,
      TObject *Source, int X, int Y)
{
  ShowMessage("Y: "+IntToStr(Y));
}
//---------------------------------------------------------------------------

void __fastcall TwClaseActividad::grdDetColEnter(TObject *Sender)
{
  //Se activa con el control Presionado
  if( ( GetKeyState(VK_CONTROL   )&128)==128 )
    grdDet->BeginDrag(true);//,10);
//    grdDet->BeginDrag(false); //Otro modo
}

Hago Uso del evento OnColEnter por que el OnMouseDown solo se activa cuando hago click fuera de las filas, el problema que se presenta usando el OnColEnter es que el Drag no se activa si se hace click en la primera columna de cualquier fila.
¿Alguna idea de como poder implementarlo? Rolling Eyes