Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Коллекция в коллекции... [D7, Win2k]


bk ©   (2004-12-15 13:20:00) 

Есть объект (компанент) полем которого является коллекция
(заполняется на этапе проектирования - с ним все нормально)
но у каждого элемента этой коллекции есть поле которое в свою очередь тоже является коллекцией (вот с ним проблема), при попытке заполнения открывается тот-же редактор элементов что и у первой коллекции, хотя объекты у коллекций разные

ЗЫ. если вопрос тупой, то попрошу не бить, а объяснить ошибку (я вообще-то понятливый)


CooLSeS   (2005-03-14 13:02:00) [1]

Хоть бы написал в чем ошибка, помог другим, а то не которые тоже могут мучиться с этим вопросом!!


bk   (2004-12-15 14:38:00) [2]

Всем спасибо, нашел ошибку, виной всему собственная невнимательность...


bk   (2004-12-15 13:50:00) [3]

{TDefParam}
 TDefParam = class(TCollectionItem)
 private
   FParam: Variant;
 public
   constructor Create(Collection: TCollection); override;
 published
   property Param: Variant read FParam write FParam;
 end;

{TDefParams}
 TDefParams = class(TCollection)
 private
   FObjMet: TMetod;
   ...
 protected
   function GetItem(Index: Integer): TDefParam;
   procedure SetItem(Index: Integer; const Value: TDefParam);
   function GetOwner: TPersistent; override;
   ...
 public
   constructor Create(lMetod: TMetod);
   property Items[Index: Integer]: TDefParam read GetItem write SetItem; default;
   ...
 end;

{TMetod}
 
 TMetod = class(TCollectionItem)
 private
   ...
   FDefParams : TDefParams;
   procedure SetDefParams(const Value: TDefParams);
 public
   constructor Create(Collection: TCollection); override;
   destructor Destroy; override;
   ...
 published
   property DefParams: TDefParams read FDefParams write SetDefParams;
   ...
 end;

{TMetods}
 TMetods = class(TCollection)
 private
   FObj: TMyObj;
 protected
   function GetItem(Index: Integer): TMetod;
   procedure SetItem(Index: Integer; const Value: TMetod);
   function GetOwner: TPersistent; override;
   ...
 public
   constructor Create(AddObj: TAddObj);
   property Items[Index: Integer]: TMetod read GetItem write SetItem; default;
   ...
 end;

{TAddObj}
 TAddObj = class(TComponent)
 private
   FMetods: TMetods;
   //
   procedure SetMetods(const Value: TMetods);
   procedure SetProps(const Value: TProps);
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 published
   property Metods: TMetods read FMetods write SetMetods;
 end;


Юрий Зотов   (2004-12-15 13:34:00) [4]

Покажите объявления классов и код методов GetOwner для 2-х элементов колекций и 2-х коллекций.


Наверх

Титульная страница Поиск, карта сайта Написать письмо