Page 1 of 1

move data between xbrowse files

Posted: Fri Jul 06, 2018 2:52 am
by alfredlam
Hi,

I wish to move the data from a cell of a list to another list based on mouse release position.
can someone please help.

Thanks and regards,
Alfred

Re: move data between xbrowse files

Posted: Sat Jul 07, 2018 10:41 am
by nageswaragunupudi
Set oBrw:lAllowPaste in the second browse.

Press Ctrl-C in the cell of the first browse and then press Ctrl-V in the cell of the second browse.

Re: move data between xbrowse files

Posted: Sat Jul 07, 2018 2:55 pm
by nageswaragunupudi
This is an example of drag and drop

Code: Select all | Expand

#include "fivewin.ch"

function Main()

   local oDlg, oBrw1, oBrw2, oCur
   local aData := Array( 50, 2 )

   USE STATES NEW

   DEFINE CURSOR oCur DRAG
   DEFINE DIALOG oDlg SIZE 640,500 PIXEL TRUEPIXEL ;
      TITLE "DRAG AND DROP"

   @ 20, 20 XBROWSE oBrw1 SIZE 300,-20 PIXEL OF oDlg ;
      DATASOURCE "STATES" AUTOCOLS ;
      COLSIZES 60,180 ;
      CELL LINES NOBORDER

   WITH OBJECT oBrw1
      :oDragCursor   := oCur
      :bDragBegin    := { |r,c,f| SetDropInfo( oBrw1:SelectedCol():Value ) }
      :CreateFromCode()
   END

   @ 20,320 XBROWSE oBrw2 SIZE 300,-20 PIXEL OF oDlg ;
      DATASOURCE aData AUTOCOLS ;
      HEADERS "CODE", "NAME" ;
      COLSIZES 60,180 ;
      CELL LINES NOBORDER

   WITH OBJECT oBrw2
      :bDropOver  := { |u,r,c,f| DropOver( u,r,c, oBrw1, oBrw2 ) }
      :CreateFromCode()
   END

   ACTIVATE DIALOG oDlg CENTERED

return nil

function DropOver( uInfo, nRow, nCol, oBrw1, oBrw2 )

   local aPoint

   aPoint      := ClientToScreen( oBrw1:hWnd, { nRow, nCol } )
   aPoint      := ScreenToClient( oBrw2:hWnd, aPoint )

   oBrw2:SetPos( aPoint[ 1 ], aPoint[ 2 ], .t. )
   oBrw2:SelectedCol():VarPut( uInfo )

return nil
 


You can drag cell contents from left browse over to the right browse and drop on the destination cell.

Re: move data between xbrowse files

Posted: Sat Jul 07, 2018 5:52 pm
by nageswaragunupudi
From version FWH 1805, bDropOver can be simplified like this:

Code: Select all | Expand

     :bDropOver  := { |uInfo,r,c,f,aPt| oBrw2:SetPos( aPt[ 1 ], aPt[ 2 ], .t. ), ;
                                         oBrw2:SelectedCol():VarPut( uInfo ) }
 

There is no need for separate function DropOver(...) as in the above sample.

Re: move data between xbrowse files

Posted: Sat Jul 07, 2018 7:00 pm
by Marc Venken
this is very very nice !!

Can we do this also with visual colors ?

I have 2 ways that I use :

1. with jpg's that are color motives
2. Hex values that are used as colors references

Image

I my setup, It would be great to drop from the xbrowse (fotos or attribute) most right the color or jpg into colpic from the first xbrowse.


Can this also work ?

Re: move data between xbrowse files

Posted: Sun Jul 08, 2018 12:29 am
by nageswaragunupudi
1) You can. When the drag begins, set the information to be sent using SetDropInfo(). When the drop finishes, use the uInfo (1st parameter of bDropInfo) the way you want to.
2) Can you show me the part of your code dislaying the image on the top and title in the bottom?

Re: move data between xbrowse files

Posted: Sun Jul 08, 2018 12:21 pm
by Marc Venken
You mean this part ..

Code: Select all | Expand


WITH OBJECT:colpic
   :bStrImage     := { || "r:\pictures\"+alltrim(ATT->colpic) }
   :oDataFont     := oFontS
   :nDataStrAlign := AL_CENTER + AL_BOTTOM
   :nDataBmpAlign := AL_CENTER
   :aImgRect      := { nil, nil, -10, nil }
END

Re: move data between xbrowse files

Posted: Sun Jul 08, 2018 12:25 pm
by nageswaragunupudi
Marc Venken wrote:You mean this part ?

WITH OBJECT:colpic
:bStrImage := { || "r:\pictures\"+alltrim(ATT->colpic) }
:oDataFont := oFontS
:nDataStrAlign := AL_CENTER + AL_BOTTOM
:nDataBmpAlign := AL_CENTER
:aImgRect := { nil, nil, -10, nil }
END

Yes.
Very good.

Re: move data between xbrowse files

Posted: Thu Jul 26, 2018 12:57 am
by alfredlam
Thanks Mr. G. N. Rao., tested your sample and work very well.
regards alfred