Zitat von
marabu:
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
Hmm , jetzt hast du doch nur den Index vom verschobenem Item, oder sehe ich das falsch?
Wenn ich Items verschiebe und der abspielende (farbig hinterlegte) Track liegt darüber, macht es nicht aus.
Wenn ich aber ein Item über den abspielenden Track schiebe, dann bekomme ich die Hinterlegung automatisch auf das falsche Item.
Das gleiche gilt ,wenn ich den abspielenden Track selbst verschiebe.Die farbige Hinterlegung bleibt auf den gemerkten Index.
Ich habe zuwenig Möglichkeiten, um den Track ganz genau zu erfassen, denn der Index kann sich ändern und der Name des Index kann zweimal vorhanden sein...lol
Bei deinem Vorschlag müsste ich schaun, welcher Index farbig hinterlegt ist und beim verschieben von irgendwelchen Items müsste ich gucken,ob dieser gewandert ist, nur ich kann diesen nicht richtig "fassen"...
PS: Marabu ist everwhere i look.....großes Dank für dein Interesse....!