xBRowser drag & drop question
- Otto
- Posts: 6403
- Joined: Fri Oct 07, 2005 7:07 pm
- Has thanked: 22 times
- Been thanked: 2 times
- Contact:
xBRowser drag & drop question
Is there somewhere an example how to drag&drop inside a xBrowser.
Thanks in advance
Otto
Thanks in advance
Otto
- nageswaragunupudi
- Posts: 10721
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Been thanked: 8 times
- Contact:
Mr Otto
Please test this program
Please test this program
Code: Select all | Expand
#include 'fivewin.ch'
FUNCTION Main()
LOCAL oWnd, oBrw, oCur, i, aData := {}
FOR i := 1 TO 6
AAdd( aData, { str(i,2), "Description " + Str( i ), Replicate( Chr( 64 + i ), 5 ) } )
NEXT i
DEFINE CURSOR oCur DRAG
DEFINE WINDOW oWnd
oBrw := TXBrowse():New( oWnd )
oBrw:SetArray( aData )
oBrw:CreateFromCode()
oWnd:oClient := oBrw
//
oBrw:oDragCursor := oCur
oBrw:bDragBegin := { |nRow,nCol,nFlags| DragBegin( nRow, nCol, nFlags, oBrw ) }
oBrw:bDropOver := { |uDropInfo, nRow, nCol, nFlags| DropOver( uDropInfo, nRow, nCol, nFlags, oBrw ) }
//
ACTIVATE WINDOW oWnd
oCur:End()
RETURN NIL
STATIC FUNCTION DragBegin( nRow, nCol, nFlags, oBrw )
SetDropInfo( EVAL( oBrw:SelectedCol():bStrData ) )
RETURN NIL
STATIC FUNCTION DropOver( uDropInfo, nRow, nCol, nFlags, oBrw )
oBrw:lButtonDown( nRow, nCol, nFlags)
oBrw:lButtonUp( nRow, nCol, nFlags)
MsgInfo( uDropInfo + CRLF + 'dropped on' + CRLF + ;
EVAL( oBrw:SelectedCol():bStrData ) )
RETURN NIL
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- Enrico Maria Giordano
- Posts: 8753
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Has thanked: 1 time
- Been thanked: 4 times
- Contact:
- Otto
- Posts: 6403
- Joined: Fri Oct 07, 2005 7:07 pm
- Has thanked: 22 times
- Been thanked: 2 times
- Contact:
Hello NageswaraRao,
I filled your example with real data and inserted a function to scroll during drag.
Dragbegin gives me the record which I drag.
Dropover the record where I drop.
But now I am a little uncertain how to change the position of the records in the browser and refresh the browser.
Maybe you have an advice for me.
www.atzwanger.com/lexikon/lexikon.zip
is what I have so far.
Best regards
Otto
![Image](http://www.atzwanger.com/fw/drag5.jpg)
I filled your example with real data and inserted a function to scroll during drag.
Dragbegin gives me the record which I drag.
Dropover the record where I drop.
But now I am a little uncertain how to change the position of the records in the browser and refresh the browser.
Maybe you have an advice for me.
www.atzwanger.com/lexikon/lexikon.zip
is what I have so far.
Best regards
Otto
![Image](http://www.atzwanger.com/fw/drag5.jpg)
- nageswaragunupudi
- Posts: 10721
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Been thanked: 8 times
- Contact:
Do you want that if the cursor goes above browse area it should page up and if it goes below browse area if should page down?
If so please try the following code
Please let me know if this is what you were looking for.
If so please try the following code
Code: Select all | Expand
function CheckListbox( nRow, nCol, oBrw, oLbx, nKeyFlags,oChild )
if nRow < oBrw:HeaderHeight()
oBrw:PageUp()
elseif nRow > ( oBrw:BrwHeight() - oBrw:FooterHeight() )
oBrw:PageDown()
endif
return nil
Please let me know if this is what you were looking for.
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- nageswaragunupudi
- Posts: 10721
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Been thanked: 8 times
- Contact:
- Enrico Maria Giordano
- Posts: 8753
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Has thanked: 1 time
- Been thanked: 4 times
- Contact:
- nageswaragunupudi
- Posts: 10721
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Been thanked: 8 times
- Contact:
- nageswaragunupudi
- Posts: 10721
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Been thanked: 8 times
- Contact:
- nageswaragunupudi
- Posts: 10721
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Been thanked: 8 times
- Contact:
Mr Otto,
Here is the solution. First you restructure the dbf like this.
1) Change the NUMMER field as NUMERIC with Width 18 and Decimals 13. ( NUMMER, 'N', 18, 13 ).
2) Create Index on NUMMER field. I have used DBFCDX and created a TAG with name NUMMER.
Having done upto this please make the following changes in your code:
Now you will get the effect you are looking for.
I shall send revised prg and dbf to your personal email
Here is the solution. First you restructure the dbf like this.
1) Change the NUMMER field as NUMERIC with Width 18 and Decimals 13. ( NUMMER, 'N', 18, 13 ).
2) Create Index on NUMMER field. I have used DBFCDX and created a TAG with name NUMMER.
Having done upto this please make the following changes in your code:
Code: Select all | Expand
before function Main:
REQUEST DBFCDX
// change the dbf open code like this:
USE C:\FWH\samples\LEXIKON.DBF NEW ALIAS LEX EXCLUSIVE VIA 'DBFCDX'
DBEVAL( {|| LEX->NUMMER := RECNO() } )
SET ORDER TO TAG NUMMER
GO TOP
// replace the new drag and drop functions given below
STATIC FUNCTION DragBegin( nRow, nCol, nFlags, oBrw )
SetDropInfo( (oBrw:cAlias)->( recno() ) )
RETURN NIL
STATIC FUNCTION DropOver( uDropInfo, nRow, nCol, nFlags, oBrw )
LOCAL nDragRec := uDropInfo
LOCAL nThisRec
LOCAL nThisKey
LOCAL nPrevKey := 0
oBrw:lButtonDown( nRow, nCol, nFlags )
oBrw:lButtonUp( nRow, nCol, nFlags )
nThisRec := (oBrw:cAlias)->( RECNO() )
nThisKey := (oBrw:cAlias)->NUMMER
( oBrw:cAlias )->( dbSKIP( -1 ) )
IF !(oBrw:cAlias)->( bof() )
nPrevKey := ( oBrw:cAlias )->NUMMER
ENDIF
( oBrw:cAlias )->( dbGOTO( nDragRec ) )
( oBrw:cAlias )->NUMMER := ( nThisKey + nPrevKey ) / 2
( oBrw:cAlias )->( dbGOTO( nThisRec ) )
oBrw:Refresh()
RETURN NIL
Now you will get the effect you are looking for.
I shall send revised prg and dbf to your personal email
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- James Bott
- Posts: 4840
- Joined: Fri Nov 18, 2005 4:52 pm
- Location: San Diego, California, USA
- Contact: