Hallo,
Ich habe ein Problem ich möchte in einem ListView mehrere Items, welche Selected sind nach oben und unten verschieben.
Momentan kann ich jedoch nur 1 selektiertes Item nach oben und unten verschieben, es geht also nicht mit mehreren gleichzeitig.
Ich wollte Fragen, ob man die folgende Prozedure auch so erweitern kann, sodass man mehrere Items gleichzeitig verschschieben kann?
Delphi-Quellcode:
procedure MoveLVItem(LV: TListView;Direction: TSearchDirection);
var aItem, NextItem,TmpItem : TListItem;
begin
with LV do
begin
if IsEditing or not Assigned(ItemFocused) then
exit;//raus wenn Item editiert wird oder kein Item selektiert ist
aItem := ItemFocused;
case Direction of
sdAbove : if aItem.Index = 0 then
exit;//Erstes Item ist markiert > raus
sdBelow : if aItem.Index = Items.Count-1 then
exit;//Letztes Item ist markiert > raus
end;
NextItem := GetNextItem(aItem,Direction,[isNone]);
Items.BeginUpdate;
try
TmpItem := TListItem.Create(Items);
TmpItem.Assign(NextItem);
NextItem.Assign(aItem);
aItem.Assign(TmpItem);
aItem.Selected := NextItem.Selected;
TmpItem.Free;
NextItem.MakeVisible(True);
ItemFocused := NextItem;
Selected := NextItem;
finally
Items.EndUpdate;
end;
end;
end;