Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2010, 07:36   #1
kartalex
 
Регистрация: 09.02.2008
Сообщений: 7
По умолчанию Как добавить в TObjectList объект произвольного типа

Здравствуйте, уважаемые коллеги!
Возник один вопрос, пожалуйста помогите найти на него ответ.

предположим есть созданные мною классы

Код:
type TParentClass: class(TObject)
 constructor Create(x,y: integer); override;
 ......
end;

type TChildClass1: class(TParentClass)
....
end;

type TChildClass2: class(TParentClass)
....
end;
есть список объектов, в котором я планирую сохранять объекты любого из этих трех классов по желанию пользователя.

Код:
List: TObjectList;
и есть переменная

Код:
VarObject: TParentClass;
если бы я хотел добавить в список List объект определенного класса, то я бы написал так -

List.Add(TParentClass.Create(x,y));
//или
List.Add(TChildClass1.Create(x,y));
//или
List.Add(TChildClass1.Create(x,y));

но я хочу добавлять объекты именно того класса, который содержится в VarObject, а VarObject в ходе меняет свой класс.

Иными словами, как упростить сей код:

Код:
if VarObject.ClassName='TParentClass' then
   List.Add(TParentClass.Create(x,y)); 
if VarObject.ClassName='TChildClass1' then
   List.Add(TChildClass1.Create(x,y)); 
if VarObject.ClassName='TChildClass2' then
   List.Add(TChildClass2.Create(x,y));
в программе будут использовано несколько десятков клаасов и их потомков, поэтому городить целую гору if..then - не годится

хотелось бы что-то вида

Код:
List.Add(какая-то функция(VarObject).Create(x,y));
kartalex вне форума Ответить с цитированием
Старый 17.11.2010, 08:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ниче не понял...
А почему нельзя добавлять List.Add(VarObject);?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2010, 15:07   #3
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Как вариант:
Код:
List.Add( TParentClass(VarObject.ClassType.NewInstance).Create( x, y ) );
maxionans вне форума Ответить с цитированием
Старый 18.11.2010, 00:25   #4
kartalex
 
Регистрация: 09.02.2008
Сообщений: 7
По умолчанию

Огромное спасибо! Именно это - то что доктор прописал!

Последний раз редактировалось mihali4; 18.11.2010 в 00:59.
kartalex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добавить в объект объект. the_deer_one Общие вопросы C/C++ 7 10.09.2010 12:17
TObjectList.Add - проблемы JustKurt Помощь студентам 3 18.06.2010 19:36
Проблемы с TObjectList lexaltd Общие вопросы Delphi 6 06.04.2009 20:54
Форма-Добавить объект-Назначить слушатель события tolikman Microsoft Office Excel 6 10.09.2008 16:18