Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Вниз

Коллекция в коллекции...   Найти похожие ветки 

 
bk   (2004-12-15 13:20) [0]

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

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


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

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


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

{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;


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

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


 
CooLSeS ©   (2005-03-14 13:02) [4]

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



Страницы: 1 вся ветка

Форум: "Компоненты";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.031 c
2-1130585016
Erl
2005-10-29 15:23
2005.11.20
MDI


3-1128617563
Michael5
2005-10-06 20:52
2005.11.20
Скролл "колесиком" в DBGrid работает только в видимой части грида


9-1120370383
Tratata
2005-07-03 09:59
2005.11.20
Книга по 3Д


14-1130482664
Изобретатель
2005-10-28 10:57
2005.11.20
Подсчет контрольной суммы файлов. Новая функция!


1-1130312278
sergg
2005-10-26 11:37
2005.11.20
Измение размера двумерного VarArray





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский