Hello Vingadero
I do not know a method to find the next item in a TListView in Lazarus, but the code below can help you.
procedure TListViewForm.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer
);
var
currentItem, nextItem, dragItem, dropItem : TListItem;
i: integer;
begin
if Sender = Source then
begin
with TListView(Sender) do
begin
dropItem := GetItemAt(X, Y) ;
currentItem := Selected;
while currentItem <> nil do
begin
nextItem := nil;
for i := 0 to Items.Count - 1 do begin
if (Items[i].Selected) and (currentItem.Index <> i) then begin
nextItem := Items[i];
break;
end;
end;
if Assigned(dropItem) then
dragItem := Items.Insert(dropItem.Index)
else
dragItem := Items.Add;
dragItem.Assign(currentItem) ;
currentItem.Free;
currentItem := nextItem;
end;
end;
end;
end;
If you find a better way, please share with us. I'm always learning more.
Greetings.
VCunha.