Dropping Items
Go Up to Implementing Drag and Drop in Controls
If a control indicates that it can accept a dragged item, it needs to handle the item if it is dropped. To handle dropped items, attach an event handler to the OnDragDrop event of the control accepting the drop. Like the drag-over event, the drag-and-drop event indicates the source of the dragged item and the coordinates of the mouse cursor over the accepting control. The latter parameter allows you to monitor the path an item takes while being dragged; you might, for example, want to use this information to change the color of components if an item is dropped.
In the following VCL example, a directory tree view, accepting items dragged from a file list box, responds by moving files to the directory on which they are dropped.
procedure TFMForm.DirectoryOutline1DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
if Source is TFileListBox then
with DirectoryOutline1 do
ConfirmChange('Move', FileListBox1.FileName, Items[GetItem(X, Y)].FullPath);
end;
void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source,
int X, int Y) {
if (Source->InheritsFrom(__classid(TFileListBox))) {
TTreeNode *pNode = TreeView1->GetNodeAt(X, Y); // pNode is drop target
AnsiString NewFile = pNode->Text + AnsiString("//") + ExtractFileName
(FileListBox1->FileName); // build file name for drop target
MoveFileEx(FileListBox1->FileName.c_str(), NewFile.c_str(),
MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED); // move the file
}
}