Единственно интересный код:

    procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
with
(Sender as TListBox) do Items.Move(ItemIndex,ItemAtPos(Point(x,y),True)); end;

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := (Sender=Source); end;

Не забудьте в ListBox присвоить свойству DragMode значение dmAutomatic.

[000150]