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

Вниз

TCollection   Найти похожие ветки 

 
nomshar ©   (2003-04-01 15:23) [0]

Господа, я разрабатываю компонент, назовем его TmContainer. Данный контейнер должен включать в себя список компонентов разных типов (вроде TmItem1, TmItem2 и т.д.). Каждый такой item обаладет своими собственными свойствами. Если бы они все были бы одного типа, то решалось бы все просто: создаем потомок класса TCollection, потом потомок класса TCollectionItem и наконец компонент для контейнера и компонент для item-ов. Так вот в связи с этим вопрос, как бы осуществить реализацию вышеизложенной задачи. Можно конечно в одном конейнере сделать несколько св-тв Items (например, AItems, BItems и т.д.), но это неудобно и перегружает код. Хотелось бы что-то вроде одного свойства Items и св-ва Type, где бы как раз и указывалось какой именно Item создавать. Однако и в этом случае получается довольно таки громоздко. Может кто подскажет более изящный способ.


 
nikb   (2003-04-01 15:50) [1]

A TmItem - eto class?
Esli class - togda zadacha ochen pohoja na tListObject.

Esli hochetca polzovat" tCollection, togda mojno sdelat naslednik tCollectionItem, v kotorom i polojit property TmItem.
Togda nado sdelat deklaraciu
tClassCollectionItemMy = Class of CollectionItemMy
tCollection.Create(tClassCollectionItemMy)


 
Roma ©   (2003-04-01 16:04) [2]

> nomshar © (01.04.03 15:23)

Сделай Items: TStrings и в свойстве Objects храни все, что хочешь...


 
Skier ©   (2003-04-01 16:29) [3]

Можно таким способом :

TYourRec = packed record
yrType : TSomeType; //например Enumeration type...
yrData : Pointer;
end; //TYourRec
PYourRec = ^TYourRec;

TYourList = class(TList)
private
protected
function Get(Index: Integer): PYourRec;
procedure Put(Index: Integer; Item: PYourRec);
public
function Add(Item: PYourRec): Integer;
property Items[Index: Integer]: PYourRec read Get write Put; default;
end; //TYourList

И...исходя из yrType, "трактуешь" yrData...


 
Юрий Зотов ©   (2003-04-01 16:40) [4]

TCollectionItem, который включает в себя строковое published-свойство ComponentClass и public-ссылку TComponent (read-only). Этот компонент и создается данным Item"ом в SetComponentClass (предусмотреть уведомление об удалении и очистку внутренней ссылки). Owner"ом у компонента ставится форма. Его редактирование в design-time - либо стандартным образом, либо (для RegisterNoIcon) через свой редактор (аналог редактора полей с Designer.SelectComponent при выборе пункта).



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

Текущий архив: 2003.04.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
1-44127
stur
2003-04-03 10:58
2003.04.14
Можно ли имя компонента выбирать автоматически..


1-44100
владимир33
2003-04-02 17:58
2003.04.14
передать ссылку на двумерный массив в функцию


8-44280
__Alx__
2003-01-11 15:06
2003.04.14
Как работать с большим изображением?


1-44233
travnikOFF
2003-04-02 05:20
2003.04.14
Плейлист


9-43984
Checist[root]
2002-11-14 11:09
2003.04.14
Нужен исходник