TListitem's per Maus verschieben?

Ist es möglich ein TListitem in einem TListview-Objekt zu verschieben(wenn Modus ist Report)?
(Wie bei der WinAMP Playlist)

Danke
Mario

auf die Schnelle…kann sicher erheblich ausgefeilt werden :o)

Gruss und viel Erfolg

RQ

procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button= mbLeft then Listview1.BeginDrag(False);
end;

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

procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var DragItem: TlistItem;
DropAtItem: TlistItem;
Index: Integer;
begin
DragItem:=Listview1.Selected;
DropAtItem:=Listview1.GetItemAt(X,Y);
if DropAtItemNil then Index:=DropAtItem.Index+1 else
Index:=Listview1.Items.Count-1;
DropAtItem:=Listview1.Items.Insert(Index);
DropAtItem.Assign(DragItem);
Listview1.Items.Delete(Listview1.Selected.Index);
end;