Hallo,
die folgende Prozedur arbeitet mit einem Objekt zur Zwischenspeicherung, sie könnte annähernd Deinen Anforderungen entsprechen. Du solltest aber noch prüfen ob alle Randbedingungen abgefangen werden
Delphi-Quellcode:
procedure MoveMultiSelectLVItem(LV: TListView;iDest: Integer);
var vLV : TListView;
vListItems : TListItems;
aItem : TListItem;
z,iTempDest : Integer;
begin
vLV := TListView.CreateParented(THandle(-3));
vListItems := TListItems.Create(vLV);
try
iTempDest := iDest;
for z := LV.Items.Count - 1
downto 0
do
if LV.Items[z].Selected
then
begin
aItem := vListItems.Add;
aItem.Assign(LV.Items[z]);
if z < iDest
then
dec(iTempDest);
LV.Items[z].Delete;
end;
for z := 0
to vLV.Items.Count - 1
do
begin
aItem := LV.Items.Insert(iTempDest);
aItem.Assign(vLV.Items[z]);
aItem.Selected := True;
end;
finally
vLV.Free;
vListItems.Free;
end;
end;