Como você arrasta e solta um arquivo do Explorer Shell em um controle VirtualTreeView em um aplicativo Delphi?

Há um amplo suporte ao arrastar e soltar no VirtualTreeView por Mike Lischke, e estou usando o TVirtualStringTree, que possui alguns eventos de arrastar e soltar, mas não consigo descobrir como fazê-lo aceitar um shell de arrastar e soltar de alguns arquivos do shell do Windows Explorer, no meu aplicativo. Quero carregar os arquivos quando eles são arrastados para o controle de queda.

Tentei usar um conjunto de códigos de terceiros de Anders Melander para lidar com arrastar e soltar, mas como o VirtualTreeView já se registra como um destino de soltar, não posso usá-lo.

editar: Encontrei uma solução alternativa simples: desative oAcceptOLEDrop no VT.TreeOptions.MiscOptions. Seria legal se alguém souber uma maneira de usar o VirtualTreeView sem usar uma biblioteca OLE-shell-drag-drop de terceiros e usar seu amplo suporte de arrastar / soltar OLE para extrair uma lista de nomes de arquivos arrastados do Shell.

questionAnswers(2)

yourAnswerToTheQuestion