Я пытаюсь реализовать методы MoveItemUp и MoveItemDown, которые перемещают выбранную строку вверх или вниз на один индекс в пределах TCollection
.
Следующий код, добавленный в мой подкласс TCollection, не работает:
procedure TMyCollection.MoveRowDown(index: Integer);
var
item:TCollectionItem;
begin
if index>=Count-1 then exit;
item := Self.Items[index];
Self.Delete(index); // whoops this destroys the item above.
Self.Insert(index+1);
Self.SetItem(index+1,item); // this actually does an assign from a destroyed object.
end;
Я вполне уверен, что это должно быть возможно во время выполнения, так как это делается во время разработки самой Delphi IDE, которая предоставляет способ переупорядочить элементы Collection в списке.Я надеюсь сделать это, просто переупорядочив существующие объекты, не создавая, не уничтожая и не назначая какие-либо объекты.Возможно ли это из подкласса Classes.pas TCollection?(Если нет, возможно, мне придется сделать свою собственную коллекцию TCollo из исходного клона)