I believe there is a demo in Samples that shows how to do this... it is in the ... samples\dragdrop\multiview2 folder.
This code starts the drag operation in MouseMove and ends the drag in the EndDrag event. It also draws a horzontal red line at the insertion point:
procedure TForm1.ImageEnMView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
iIndex: integer;
begin
ImageEnMView1.MultiSelectSortList; // selection order is not important
iIndex := ImageEnMView1.InsertingPoint(X, Y);
ImageEnMView1.MoveSelectedImagesTo(iIndex);
end;
procedure TForm1.ImageEnMView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState;
var Accept: Boolean);
var
iIndex: integer;
imgX, imgY: integer;
begin
if Source = ImageEnMView1 then
begin
Accept := True;
iIndex := ImageEnMView1.InsertingPoint(x, y);
imgX := ImageEnMView1.ImageX[iIndex] - ImageEnMView1.ViewX;
imgY := ImageEnMView1.ImageY[iIndex] - ImageEnMView1.ViewY;
ImageEnMView1.Paint;
// draw a horzontal red line to show the insertion point
with ImageEnMView1.GetCanvas do
begin
Pen.Color := clRed;
Pen.Width := ImageEnMView1.SelectionWidth;
MoveTo(imgX + 10, imgY);
LineTo(imgX + ImageEnMView1.ThumbWidth - 10, imgY);
end;
end;
end;
procedure TForm1.ImageEnMView1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
// stop dragging
ImageEnMView1.IEEndDrag;
ImageEnMView1.MouseInteract := [mmiSelect];
end;
procedure TForm1.ImageEnMView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if (ssLeft in Shift) then
begin
ImageEnMView1.MouseInteract := [];
// initiate dragging
ImageEnMView1.IEBeginDrag(true, -1);
end;
wnd;

108.98 KB Selected image is blue and insertion point is red
102.89 KB Image showning images after drop
William Miller
Email: w2m@frontiernet.net
EBook: http://www.imageen.com/ebook/
Apprehend: http://www.frontiernet.net/~w2m/index.html