Ich habe mir jetzt nur deinen event handler für OnDragDrop() angesehen - warum setzt du denn den korrekten Index nicht nachdem du ein Item verschoben hast?
Delphi-Quellcode:
//Playlisteneinträge verschieben
procedure Tmediaplayer_frm.PlayList_ListBoxDragDrop(Sender,
Source: TObject; X, Y: Integer);
var
i,j : Integer;
begin
i := PlayList_ListBox.ItemIndex;
j := PlayList_ListBox.ItemAtPos(Point(x, y), true);
// diesen Test solltest du im OnDragOver machenvorhanden
if j > -1 then
begin
// die nächste Zeile würde bei virtueller Listbox entfallen
PlayList_ListBox.Items.Move(i,j);
PlayList.Move(i,j);
PlayList_ListBox.ItemIndex := j;
end;
end;
Grüße vom marabu