Drag and Drop between Data Grids
zryip.theslug at gmail.com
Tue Dec 14 15:09:53 EST 2010
On Tue, Dec 14, 2010 at 5:45 PM, Bob Sneidar <bobs at twft.com> wrote:
> Well, I copied and pasted your scripts from your datagrids to mine. While I can drag, I do not seem to be able to drop. Yours work, mine do not. I got really flustered at that so I gave up for the night. I am going to have a fresh go at it today sometime.
> Permit me a bit of a rant: While Data Grids are pretty cool and do amazing things, I was kind of hoping for a native table field. Mastering Data Grids seems to take as much or more as it took to master everything else about LiveCode.
1) In the datagrid source you need to have: the
dgTrackDragReorder[tTheIndex] set to false
If set to true, the datagrid tracks the move inside it. If set to
false you are allowed to move the data outside it.
Only this handler is required in the source datagrid:
local tTheIndex, tTheDragData, tTheDataControl
put the dgDataControl of the target into tTheDataControl
if (tTheDataControl is empty) then pass dragStart -- Prevent the
move if no data control exists
if (the dgHeader of the target is empty) then
put the dgIndex of the dgDataControl of the target into tTheIndex
set the dgDragImageIndex of me to tTheIndex
## Prepare the data to add in the datagrid 2
put the dgDataOfIndex[tTheIndex] of me into tTheDragData
combine tTheDragData using tab
set the dragData["private"] to tTheDragData
set the dgTrackDragReorder[tTheIndex] of me to false --
Important to move the data outside
2) In the destination, you need two handlers:
set the dragaction to "copy"
The dragaction will allow the datagrid to get the data you drop.
local tTheNewData, tTheColOrder
put "Col1" & cr & "Col2" into tTheColOrder
put the dragData["private"] into tTheNewData
send "AddLine tTheNewData, tTheColOrder" to me
The dragDrop handler will receive the data dropped if the dragaction is allowed.
-Zryip TheSlug- wish you the best! 8)
More information about the Use-livecode