Drag & Drop needs to be implemented manually, below is code that inserts or adds an item based on TCustomItem. The item also be a custom class that inherits from TCustomItem.
The code below is drag & drop code based on 2 TAdvPolyList instances, where the item to be dropped is obtained from the DropItem function. But the Source can come from another component as well.
I Imagine that DropItem could also be used on a DragOver event in order to decide if the item can be accepted or not. However, it seems that sometimes DropItem() is correctly set, sometimes no.
Having 2 AdvPolyLists, each one with 3 ImageItems, and starting to drag and ImageItem from the first to the second list the following exception is sometimes fired.
(Please note that I always start the drag from an ImageItem., not from the list background).
DropItem is reinitialized each time a DragOver event occurs on the TCustomItemsContainer. So while you are dragging an item outside of the list it could be possible that the last X/Y coördinates do not detect an item and therefore setting FDropItem to nil. To make sure you are always dragging an item, it would be better to use the OnMouseDown event and set a FDropItem variable manually via the ItematXY function