Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизКопирование колекций.Ошибка при assign. Найти похожие ветки
← →
shine (2004-08-05 03:02) [0]Надо скопировать содержимое одной колекции в другую.
Делаю так:ListItemArraySelectDlg.TmpControlList.assign(ListItemArraySelectDlg.Layout.ControlList);
гдеTmpControlList:TControlList;
...
TCustomLayout = class(TControl)
private
FControlList: TControlList;
...
public
procedure SetCL(AControlList:TControlList);
...
published
property ControlList: TControlList read FControlList write SetCl;
...
end;
TControlList = class(TOwnedCollection)
...
public
property Items[Index: Integer]: TLayoutItem read GetItem write
SetItem; default;
...
end;
TLayoutItem = class(TCollectionItem);
В общем тип у них одинаковый.Если обе коллекции не содержат элементов, то все нормально.(в смысле ошибки не возникает)
Если одна из коллекций не пустая, то выдает ошибку:
Cannot assign a TLayoutItem to a TLayoutItem.
Пробовал делать присваивание:Layout.ControlList:=TmpControlList
потом проверяюLayout.ControlList.Count
- выдает, что количество ненулевое,однако в object inspector новых элементов коллекции не добавляется.
Как же все-таки скопировать содержимое одной коллеции в другую?
Заранее спасибо.
P.S. Если кто-то интересуется, зачем мне все это, то я делаю редактор компонента и стандартный редактор колекций меня не очень устраивает.
← →
Юрий Зотов © (2004-08-05 08:35) [1]> Cannot assign a TLayoutItem to a TLayoutItem.
Перекройте AssignTo у TLayoutItem и там напишите присвоение Target свойств Self.
А вообще-то, надо бы видеть код элемента коллекции, самой коллекции и компонента-контейнера.
← →
Digitman © (2004-08-05 08:44) [2]в классе TLayoutItem переопредели виртуальный метод AssignTo()
тем самым ты "научишь" объект этого класса копировать себя в другой объект того же класса
← →
shine (2004-08-05 11:56) [3]Спасибо, сейчас попробую.
← →
shine (2004-08-05 12:17) [4]Огромное Спасибо!!! Получилось.Работает.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c