Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

Копирование колекций.Ошибка при 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.053 c
3-1090850411
Manfred
2004-07-26 18:00
2004.08.22
AccessViolation при закрытии клиента


14-1091701094
syte_ser78
2004-08-05 14:18
2004.08.22
иконки технологической арматуры


3-1090221921
Ani
2004-07-19 11:25
2004.08.22
Надо так сделать что при Preview в QuickReport е отабражался толк


14-1091739274
Ev_genus
2004-08-06 00:54
2004.08.22
Мастера Ассемблера где вы?


14-1091541507
Мастер
2004-08-03 17:58
2004.08.22
Продолжаем тему тестирования.