Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c