Wieder Danke Marabu, eigentlich hätte ich da auch selber drauf kommen können
trotzdem muss ich dich nochmal nerven,
ich hab das jetzt mal geändert wie ich gedacht habe, funktioniert für ein Item auch
wunderbar, nur beim Multiselect gibts Probleme.
Delphi-Quellcode:
procedure TfDLMain.ListViewDragDrop(Sender, Source: TObject; X, Y: Integer);
var
DragItem, DropItem, CurrentItem, NextItem: TListItem;
i, Index1, Index2 :Integer;
begin
if Sender = Source then begin
for i:= 0 to ListItems.Count-1 do begin
if ListItems[i].Selected = true then begin
DropItem := ListView.GetItemAt(X, Y);
Index1 := i;
Index2 := DropItem.Index;
Values.Insert(Index2,Values[Index1]);
Values.Delete(Index1);
end;
end;
end;
ListView.Invalidate;
//*************************************************************************
//***** alte Methode fuer Listview ohne VirtualMode ********************
//*************************************************************************
// if Sender = Source then
// with TListView(Sender) do begin
// DropItem := GetItemAt(X, Y);
// CurrentItem := Selected;
// while CurrentItem <> nil do begin
// NextItem := GetNextItem(CurrentItem, SdAll, [IsSelected]);
// if DropItem = nil then DragItem := Items.Add
// else
// DragItem := Items.Insert(DropItem.Index);
// DragItem.Assign(CurrentItem);
// CurrentItem.Free;
// CurrentItem := NextItem;
// end;
// end;
//*************************************************************************
//*************************************************************************
end;
hab das Problem, dass er zwar die Items verschiebt, aber dann nur ein Item aus meiner "Values" löscht.
Gruß Ruben