I'm not creating my own TDragObject.
I tried that earlier -
https://forum.lazarus.freepascal.org/index.php/topic,49739.0.htmlNow relying on the built in functionality - only changing the cursor, to indicate move copy or exchange, through the dragged controls DragCursor property.
And that part is functioning with other controls, at least...
I have tried to attach here my test / development project.
And please bear with me - it is a test and development, and as such a work in progress.
The problem is in the playcontainer.
Project has one list on the left - showing a simple list of filenames, but TableContainer can do a lot more, and do a lot more in the app I am needing this for.
The PlayContainer in the middle with the problem is showing the same list, in a more elaborate way.
Goal is to be able to Move, Copy and Exchange elements in the underlying list, through dragging in or between the two lists.
On the right is a label inside three panels - it and the panel holding it, can be dragged, and the dragged control is the panel holding the others (ie - not the control you actually use to start the dragging operation). Showing that what I try to do with PlayContainer, is actually possible - just can't put my finger on WHAT is going wrong.
Bottom right is a panel that accepts dropping, and tells you what "control" is dropped, and what operation was used (drag with no button will Move, holding Ctrl will Copy and holding Alt will Exchange).
This test, creates a StringList of filenames, in the subfolder given in the edit.
I will upload a list of small images, that can be used for this in another comment - too big and too many for this - or you can use some of your own. (List limits display to 120x120 pix - slow if you use big images)...
In the actual app, dragging will be required between several of these controls.