TCollection
내에서 선택한 행을 위 또는 아래로 이동하는 MoveItemUp 및 MoveItemDown 메서드를 구현하려고합니다.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;
를 그에게 방법을 제공 델파이 IDE 자체 디자인 타임에서 수행으로 나는이 런타임에 가능해야 상당히 확신 :
다음 코드는 작동하지 않습니다 된 TCollection의 내 서브 클래스에 추가 컬렉션 항목을 목록에서 재정렬하십시오. 나는 어떤 객체를 생성, 파괴 또는 할당하지 않고 기존 객체의 순서를 변경하여이 작업을 수행하기를 바라고 있습니다. 이것은 Classes.pas TCollection의 서브 클래스에서 가능합니까? (그렇지 않다면 소스 클론에서 내 자신의 TCollection을 만들어야 할 수도 있습니다)
컬렉션 아이템의'Index' 속성을 설정하면'Item.Index : = Item.Index + 1' (이것은 콜렉션의 아이템리스트의'Move')를 호출해야합니다. 특별한 처리가 필요하다면'SetIndex' 메쏘드가 오버라이드 될 것입니다. –