Bueno he retomado este tema y como pens茅 que el problema era que no se podia arrastra de un listbox a un xbrowxe lo probe con xbrowse solo y me doy cuenta que el problema no est谩 en arrastrar de un control a otro sino la posici贸n que ocupan en el dialogo
Si el se arrastra de un xbrowse a la derecha, a la izquierda o abajo no hay problema pero si se arrastra de un xbrowse otro control que est谩 arriba no se ejecuta bDropOver. Supongo que el xBrowse origen est谩 esperando algo ya que no se libera el arrastre hasta que se hace un nuevo click en el browse origen
Alguna idea de que tengo que cambiar para poder arrastra de abajo arriba desde un xbrowse
#include "Fivewin.ch"
function Main()
聽 聽 Local oDlg
聽 聽 Local oLbx1, oLbx2, oLbx3, cValue, aItems
聽 聽 Local oBrw1, oBrw2, oBrw3
聽 聽 Local oCursor, oOrigen, oDestino
聽 聽 DEFINE CURSOR oCursor drag
聽 聽 aItems := { "UNO", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE" }
聽 聽 DEFINE DIALOG oDlg SIZE 800,600
聽 聽 @ 聽10, 聽10 LISTBOX oLbx1 VAR cValue ITEMS aItems ;
聽 聽 聽 聽 聽 聽 聽 聽SIZE 80, 100 PIXEL OF oDlg
聽 聽 @ 聽10, 100 LISTBOX oLbx2 VAR cValue ITEMS {} ;
聽 聽 聽 聽 聽 聽 聽 聽SIZE 80, 100 PIXEL OF oDlg
聽 聽 @ 聽10, 300 XBROWSE oBrw1 OF oDlg COLUMNS 1 ;
聽 聽 聽 聽 聽 聽 聽 聽ARRAY { "Item 1","Item 2","Item 3","Item 4" } ;
聽 聽 聽 聽 聽 聽 聽 聽SIZE 100, 100 PIXEL
聽 聽 @ 120, 聽10 XBROWSE oBrw2 OF oDlg COLUMNS 1 ;
聽 聽 聽 聽 聽 聽 聽 聽ARRAY { "Item 1","Item 2","Item 3","Item 4" } ;
聽 聽 聽 聽 聽 聽 聽 聽SIZE 100, 100 PIXEL
聽 聽 @ 120, 120 XBROWSE oBrw3 OF oDlg COLUMNS 1 ;
聽 聽 聽 聽 聽 聽 聽 聽ARRAY { "Item 11","Item 12","Item 13","Item 14" } ;
聽 聽 聽 聽 聽 聽 聽 聽SIZE 100, 100 PIXEL
聽 聽 @ 120, 300 LISTBOX oLbx3 VAR cValue ITEMS {} ;
聽 聽 聽 聽 聽 聽 聽 聽SIZE 80, 100 PIXEL OF oDlg
聽 聽 oBrw1:CreateFromCode()
聽 聽 oBrw2:CreateFromCode()
聽 聽 oBrw3:CreateFromCode()
聽 聽 oLbx1:Cargo := "LBX1"
聽 聽 oLbx2:Cargo := "LBX2"
聽 聽 oLbx3:Cargo := "LBX3"
聽 聽 oBrw1:Cargo := "BRW1"
聽 聽 oBrw2:Cargo := "BRW2"
聽 聽 oBrw3:Cargo := "BRW3"
聽 聽 // DEFINIR DRAG AND DROP
聽 聽 oLbx1:oDragCursor := oCursor
聽 聽 oLbx1:bDragBegin 聽:= { | 聽 聽 聽 聽 聽 聽nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oOrigen := oLbx1, 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetBegin(oOrigen) }
聽 聽 oLbx1:bDropOver 聽 := { | uDropInfo, nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oDestino := oLbx1, 聽 聽 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetOver(uDropInfo, nRow, nCol, nKeyFlags, oOrigen, oDestino) }
聽 聽 oLbx2:oDragCursor := oCursor
聽 聽 oLbx2:bDragBegin 聽:= { | 聽 聽 聽 聽 聽 聽nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oOrigen := oLbx2, 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetBegin(oOrigen) }
聽 聽 oLbx2:bDropOver 聽 := { | uDropInfo, nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oDestino := oLbx2, 聽 聽 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetOver(uDropInfo, nRow, nCol, nKeyFlags, oOrigen, oDestino) }
聽 聽 oLbx3:oDragCursor := oCursor
聽 聽 oLbx3:bDragBegin 聽:= { | 聽 聽 聽 聽 聽 聽nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oOrigen := oLbx3, 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetBegin(oOrigen) }
聽 聽 oLbx3:bDropOver 聽 := { | uDropInfo, nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oDestino := oLbx3, 聽 聽 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetOver(uDropInfo, nRow, nCol, nKeyFlags, oOrigen, oDestino) }
聽 聽 oBrw1:oDragCursor := oCursor
聽 聽 oBrw1:bDragBegin 聽:= { | 聽 聽 聽 聽 聽 聽nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oOrigen := oBrw1, 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetBegin(oOrigen) }
聽 聽 oBrw1:bDropOver 聽 := { | uDropInfo, nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oDestino := oBrw1, 聽 聽 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetOver(uDropInfo, nRow, nCol, nKeyFlags, oOrigen, oDestino) }
聽 聽 oBrw2:oDragCursor := oCursor
聽 聽 oBrw2:bDragBegin 聽:= { | 聽 聽 聽 聽 聽 聽nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oOrigen := oBrw2, 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetBegin(oOrigen) }
聽 聽 oBrw2:bDropOver 聽 := { | uDropInfo, nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oDestino := oBrw2, 聽 聽 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetOver(uDropInfo, nRow, nCol, nKeyFlags, oOrigen, oDestino) }
聽 聽 oBrw3:oDragCursor := oCursor
聽 聽 oBrw3:bDragBegin 聽:= { | 聽 聽 聽 聽 聽 聽nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oOrigen := oBrw3, 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetBegin(oOrigen) }
聽 聽 oBrw3:bDropOver 聽 := { | uDropInfo, nRow, nCol, nKeyFlags | ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oDestino := oBrw3, 聽 聽 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 SetOver(uDropInfo, nRow, nCol, nKeyFlags, oOrigen, oDestino) }
聽 聽 ACTIVATE DIALOG oDlg CENTER
RETURN .F.
//-----------------------**-----------------------------------------------//
STATIC FUNCTION SetBegin(oOrigen)
/*
Local cOrigen := Left(oOrigen:Cargo, 3)
If cOrigen == "LBX"
聽 聽If len(oOrigen:aItems) >0
聽 聽 聽 SetDropInfo( oOrigen:getSelText() )
聽 聽EndIf
聽 聽RETURN NIL
EndIf
If cOrigen == "BRW"
聽 聽SetDropInfo( oOrigen:aArrayData[oOrigen] )
EndIf
*/
RETURN NIL
//-----------------------**-----------------------------------------------//
STATIC FUNCTION SetOver( uDropInfo, nRow, nCol, nKeyFlags,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oOrigen, oDestino)
Msginfo("Arratrando " + oOrigen:Cargo + " a " + oDestino:Cargo)
RETURN NIL
return nil