Danke für die Hilfe Marabu...
Dein Source geht mit kleiner Abwandlung für ein Item. Für mehrere schaff ich es nur wenn "ito < ifrom"
Wenn ich mal mehr Zeit habe schaue ich mir das nochmal genauer an, aber für jetzt hab ich es auf ein Item begrenzt.
Hier der jetztige Code
Delphi-Quellcode:
procedure TfDLMain.ListViewDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure MoveStrings(s: TStrings; iFrom, iTo, iCount: Integer);
var
i: Integer;
begin
s.BeginUpdate;
try
if iTo < iFrom then
s.Move(Pred(iFrom+iCount), iTo)
else
s.Move(iFrom, iTo);
finally
s.EndUpdate;
end;
end;
var
DragItem, DropItem, CurrentItem, NextItem: TListItem;
i, Index1, Index2, Index3 :Integer;
begin
if Sender = Source then begin
if ListView.SelCount = 1 then begin
for i:= 0 to ListItems.Count-1 do begin
if ListItems[i].Selected = true then begin
DropItem := ListView.GetItemAt(X, Y);
if DropItem <> nil then begin
Index1 := i;
Index2 := DropItem.Index;
Index3 := ListView.SelCount;
ListItems[i].Selected := false;
MoveStrings(Values,Index1,Index2,Index3);
end;
end;
end;
ListView.Invalidate;
end
else MessageDlg('Bitte zum verschieben von mehreren Items das "Move Up", bzw. das "Move Down" verwenden.', mtInformation, [mbOK], 0);
end;
end;
Vielen Dank für die Anregungen Marabu
Gruß Ruben