Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
9-1079999810
Новичек
2004-03-23 02:56
2004.08.22
Как написать 3d-игру?


14-1091714217
default
2004-08-05 17:56
2004.08.22
Удалённая работа


3-1091430919
P_Aleks
2004-08-02 11:15
2004.08.22
Обрезание строки до 256 символов (bde?) при получении её с севера


14-1091535313
MGWarlock
2004-08-03 16:15
2004.08.22
I need help! Помогите поставить WinXP.


14-1091301524
Sir John
2004-07-31 23:18
2004.08.22
Вильямс завалил Тайсона





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский