Ok, so after almost going bald trying to get drag and drop to work in Lazarus (via the standard ways, setting DragMode to dmAutomatic) I read that drag and drop is not implemented in Lazarus (yet).

So now, I have a problem, I need drag and drop or an alternative solution within my application. I'd like it to work in Windows, Mac OSX and Linux. Bascially I'm converting my old Tile Joiner (allows you to build sprite sheets and tile sheets from individual bitmaps as well as build a definition file for them) over to Lazarus.

To show my problem, here is a screenshot of the application:


Dragging of items in the VirtualTreeView on the left is what I need to implement. I want users to be able to drag items from the undefined bucket into the proper bucket. Then move them around within there as well. Of course, I could also put a popup menu that lets you select what bucket to place an item in, but this seems cludgy. So what do you all think, is there a way to do the DnD operations easily, or should I cludge it? Any other options that you see that I might be missing would also be nice.